home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
CRS
/
crs58.d81
/
geoprgin.arc
/
GEOPROGINFO
Wrap
Text File
|
2009-10-10
|
118KB
|
3,102 lines
╚ITCH╚IKER'S ╟UIDE ╘O ╟EO╨ROGRAMMER ╓2.0
----------------------------------------
╘HIS DOCUMENT CONTAINS A COLLECTION OF WORKING DOCUMENTS CONCERNING
GEO╨ROGRAMMER ╓2.0. ┴S THERE IS NO USER'S MANUAL, THESE FILES WILL HAVE
TO SUFFICE FOR NEW USERS.
┼RIC ┼. ─EL ╙ESTO, ─ECEMBER 1990.
╟ENERAL:
FEATURES╓2
╥╧╒╬─1
╓┼╥╙╔╧╬╙
╓┼╥╙╘┴╘╙
╒╨╟╥┴─┼_╘╧_╓2
╘╧─╧
╟EO┴SSEMBLER:
GEO┴SSEM╘╧─╧
╟EO╠INKER:
GEO╠INK╘╧─╧
╟EO─EBUGGER:
GEO─EBUG╘╧─╧
GEO─EBUG╙PECS╥┼┴─═┼
╔NIT╞OR╔╧┬UG
╥┼╒╬OTES
╥┼╒BUGS
APP╘YPES
MEM╨ROTECT
CBM┴PPS
HIDE═ODE
INTERRUPTS
NMI
RBOOT╫ARN
VIEW├OMMAND
ENVIRONMENT
WISH╠IST
NEW:
GEO┴SSEMBLER, GEO╠INKER, AND GEO─EBUGGER TAKE FULL ADVANTAGE
OF EXTRA MEMORY AND 2 ═╚┌ PROCESSOR SPEED OF ├OMMODORE 128
AND 128─ COMPUTERS.
╬OW: FASTER AND MORE MEMORY-EFFICIENT!
╟EO╨ROGRAMMER ╔MPROVEMENTS
╔N ╓ERSION 2.0
╟EO┴SSEMBLER:
ONE PROGRAM RUNS UNDER ╟┼╧╙ 64 ┴╬─ ╟┼╧╙ 128 (80 COLUMN ONLY ON 128)
FILE SELECTION ─┬ SCROLLS FASTER AND HOLDS 40 FILENAMES
SYMBOL TABLE SIZE: ├64 MODE ├128 MODE
3210
MACRO TABLE SIZE: ├64 MODE ├128 MODE
XXX NAMES, XXX CHARS 389 NAMES, 8000 CHARS
OBJECT CODE SIZE LIMIT: ├64 MODE ├128 MODE
XXX BYTES 7999 BYTES
NEW ERROR MESSAGES:
"TOO MANY LOCAL LABEL REFERENCES"
"PHASE ERROR IN VALUE"
"PHASE ERROR IN FLAG"
"SYNTAX ERROR"
("TOO MANY LOCAL LABELS" CHANGED TO "TOO MANY LOCAL LABEL DEFINITIONS")
HAS .TEXT DIRECTIVE TO ASSEMBLE ASCII INTO ├┬═ TEXT CODES.
ENDING ─┬ HAS ICON TO RUN THE LINKER
╟EO╠INKER:
ONE PROGRAM RUNS UNDER ╟┼╧╙ 64 ┴╬─ ╟┼╧╙ 128 (80 COLUMN ONLY ON 128)
FILE SELECTION ─┬ SCROLLS FASTER AND HOLDS 40 FILENAMES
╓╠╔╥ LINKS: UP TO 21 MODULES (RESIDENT + 20 OVERLAY)
ALLOWS UP TO 20 .REL FILES PER MODULE (OR TOTAL IN ╙┼╤ LINK)
SYMBOLS: ├64 MODE ├128 MODE
╙┼╤ / ├┬═ APPLICATIONS: X X
╓╠╔╥ APPLICATIONS: X X
RESIDENT MODULE: X 3185
SWAP MODULE: X 1375
OBJECT CODE SIZE LIMIT: ├64 MODE ├128 MODE
XXX BYTES 7999 BYTES
NEW ERROR MESSAGES:
"TOO MANY ERRORS"
"ILLEGAL FILE NAME"
"TOO MANY FILES IN A MODULE"
ENDING ─┬ HAS ICON TO RUN THE DEBUGGER
╟EO─EBUGGER:
ONE PROGRAM RUNS UNDER ╟┼╧╙ 64 ┴╬─ ╟┼╧╙ 128
SEE SUB-AREAS BELOW FOR NOTED DIFFERENCES BETWEEN MACHINES
SYMBOLS: ├64 MODE ├128 MODE
╙┼╤ / ├┬═ APPLICATIONS:
╓╠╔╥ APPLICATIONS:
RESIDENT MODULE:
SWAP MODULE:
╙UPER─EBUGGER (IN ╥┼╒) NOW OFFERS 800 SYMBOLS AND
1╦ OF MACRO DEFINITIONS.
128 MODE HAS NEW "┬ACK╥AM ╙UPER─EBUGGER", WHICH HIDES IN ┬ACK╥AM.
╒SER CAN WRITE FULL-SIZED APPLICATIONS IN ╞RONT╥AM.
├AN HANDLE 1000 SYMBOLS AND 1╦ OF MACRO DEFINITIONS.
** ╘HIS NEW 20╦ DEBUGGER DOES NOW INCREASE SIZE OF ╟EO─EBUGGER:
THERE IS A DIFFERENTIAL LOADER SCHEME WHICH LOADS
IN THE SUPER DEBUGGER AND THEN RELOCATES THE CODE
FOR EITHER THE ╥┼╒ OR ┬ACK╥AM.
NO ╟┼╧╙ SCREEN ASSUMPTIONS:
DISPLAYS DEBUG INFORMATION ON 40-COLUMN SCREEN,
AND RETURNS TO WHATEVER SCREEN (AND SCREEN MODE)
WAS IN USE WHEN RUNNING USER CODE, OR WHEN ╞7 IS PRESSED
SEE BELOW ABOUT DEBUGGER'S SHADOW VARS FOR ╓╔├ PARAMETERS
NEW AND IMPROVED MEMORY READ/WRITE ROUTINE:
╔NTERCEPTS (AND REDIRECTS TO DEBUGGER SHADOW VARIABLES)
READS AND WRITES TO:
$0000 AND $0001 (REGISTERS WHICH CONTROL MEMORY MAP)
AREA OF ZERO PAGE WHICH IS USED BY DEBUGGER
MEMORY AREAS USED BY ╥┼╒ ╙UPER─EBUGGER (REDIRECTS
TO USER MEMORY SWAP AREA IN BANK #0 OF ╥┼╒)
SEVERAL ╓╔├ CHIP REGISTERS, INCLUDING $──00 (CIA2┬ASE),
WHICH CONTROLS ╓╔├ MEMORY MAP
ON 128: $─500-$─50┴ (MEMORY MANAGMENT UNIT)
$╞╞00-$╞╞04 (MORE MMU REGISTERS)
$─030 (1═╚┌/2═╚┌ SWITCH)
─ISALLOWS READS AND WRITES TO:
ALL ╥╧═ AREAS (SO NO BLEED THROUGH TO ╥┴═ OCCURS)
ANY AREA WHERE DEBUGGER CODE OR SYMBOLS ARE STORED
(5 DIFFERENT CASES HERE, DUE TO 3 DEBUGGER TYPES
ON 2 MACHINES.)
STACK AREA BELOW CURRENT ╙╨ (DEBUGGER IS USING)
PAGE 3 ╔╥╤/┬╥╦/╬═╔ VECTORS USED BY ╥╧═S
$╞╞╞9 AREA ╔╥╤/┬╥╦/╬═╔ VECTORS
RAM EXPANSION UNIT'S ─═┴ CONTROLLER, IF USING
╥┼╒ ╙UPER─EBUGGER
"CTAB" - EXTERNAL 1╦X4 ╥┴═ USED BY ╓╔├ CHIP IN TEXT
MODE. ╧N 128, THERE ARE TWO OF THESE. ─EBUGGER
USES CTAB #1, AND PREVENTS ╥/╫ TO IT. ╒SER IS
FREE TO USE CTAB #0.
╫HEN ACCESSING ╥┴═ IN 128 MODE, CALCULATES EFFECTIVE ADDRESS,
TAKING BANK NUMBER AND BANK SHARING STATUS INTO ACCOUNT.
╬EW AND IMPROVED CONTEXT SWITCH (SECTION OF CODE WHICH BRIDGES GAP
BETWEEN DEBUGGER AND USER CODE):
TRAPS INTERRUPTS WHICH OCCUR WHEN USER'S APPLICATION SWAPS ╥╧═
IN WITHOUT DISABLING INTERRUPTS; WARNS USER THROUGH
DEBUGGER MESSAGE.
ON 128 SYSTEM:
HANDLES BANK-TO-BANK SWITCHING REQUIRED TO
GET FROM EITHER BANK TO ONE OF 3 DEBUGGERS.
SAVES AND RESTORES PROCESSOR CLOCK SPEED 1═╚┌ / 2═╚┌
* ╔MPROVED ╟ET┬ / ╨UT┬ COMMAND: WORKS WITH 1571 AND 1581 DRIVES.
* ─ISASSEMBLES AND TOP-STEPS THROUGH IN-LINE CALLS TO ╟┼╧╙ CORRECTLY.
╒SER CAN DISABLE THIS OPTION.
* DISPLAYS ├╨╒_─┴╘┴ ($0001) OR ├ONFIG ($╞╞00) AS PRIMARY MEMORY MAP
REGISTER IN 64 AND 128 MODES RESPECTIVELY. ╘HIS AFFECTS
THE "╥" REGISTER DISPLAY COMMAND AND THE "╥┼╟" REGISTER
DISPLAY/MODIFY COMMAND.
═ORE ERROR CHECKING DURING FILE LOADS, WITH INFORMATIVE DIALOG BOXES:
EXTENSIVE ERROR CHECKS AND GOOD ERROR DIALOG BOXES FOR:
DEBUGGER MODULE SWAPS
USER APPLICATION LOADS
MACRO FILE LOADS
SYMBOL FILE LOADS
DISPLAYS INFORMATIVE ERROR DIALOG BOX FOR FORMAT ERRORS
IN GEO╫RITE MACRO DEFINITION FILES. ─ISPLAYS FILENAME,
ERROR MESSAGE, PAGE AND LINE NUMBER.
CAN DEBUG APPLICATIONS WHICH TRASH ╟┼╧╙
APPLICATION MUST HANDLE LOADING ITS OWN CODE IN OVER ╟┼╧╙ AREAS
APPLICATION MUST DISABLE INTERRUPTS OR SET UP ITS OWN
INTERRUPT SERVICE ROUTINE. ╫ILL HAVE TO BE CLEVER
TO PLACE HIS INTERRUPT VECTOR IN $334 AREA WHEN
HIS APPLICATION IS RUNNING UNDER THE DEBUGGER.
(╔ WILL SUPPLY THIS CODE IN THE NEW SAMPLE APP.)
╒NSEEN COMPLICATIONS WHICH ARE HANDLED:
BANK SWITCH CONCERNS DURING:
CONTEXT SWITCH
╩╙╥ COMMAND
╟ET┬ / ╨UT┬ COMMANDS
RBOOT
MAINTAINING SOFTWARE BREAKPOINTS
SINGLE STEP BREAKPOINT
┴ND ALL BUGS HAVE BEEN FIXED!
╙AMPLE ╞ILES:
╟┼╧╨╥╧╟╥┴══┼╥ ╓2.0
┬┼╘┴ ╘┼╙╘ ╥╧╒╬─ #1
╩ULY 29, 1988
*** ╨╠┼┴╙┼ ╥┼┴─ ╘╚╔╙ ┬┼╞╧╥┼ ┘╧╒ ╔╬╙╘┴╠╠ ╘╚┼ ─╔╙╦ ***
├ONGRATULATIONS ON BEING SELECTED AS A TESTER FOR GEO╨ROGRAMMER ╓2.0 !
┬ECAUSE GEO╨ROGRAMMER IS SUCH A COMPLEX PRODUCT, AND BECAUSE WE WANT
TO MAKE SURE IT IS 100% BUG-FREE WHEN WE START SHIPPING IT, WE HAVE DECIDED
TO PUT GEO╨ROGRAMMER ╓2.0 THROUGH TWO ROUNDS OF ┬ETA ╘ESTING.
╘HIS IS ROUND ONE. ╔N THIS PACKAGE YOU WILL FIND YOUR GEO╨ROGRAMMER ╓2.0
DISK, AND SOME QUICK NOTES ABOUT DIFFERENCES FROM VERSIONS ╓1.0 AND ╓1.1.
╒NFORTUNATELY, WE HAVE NOT HAD THE TIME TO FULLY TEST GEO╠INKER,
AND WE HAVE NOT YET COMPLETED UPGRADING THE COLLECTION OF SAMPLE FILES
TO ╟┼╧╙ ╓2.0 LEVEL. ╘HEREFORE, DO NOT BE CONCERNED IF YOU ENCOUNTER
SEVERAL BUGS IN GEO╠INKER. ╩UST LET ME KNOW BY FILLING OUT ONE OF THE
ENCLOSED ┬UG ╥EPORT FORMS, AND SENDING THE FORM BACK (ALONG WITH
SOURCE FILES IF REQUIRED) TO ┬ERKELEY ╙OFTWORKS AS SOON AS POSSIBLE.
╧VER THE NEXT THREE TO FOUR WEEKS WE WILL PUT THE FINISHING TOUCHES
ON THE PRODUCT, WILL FIX ANY BUGS THAT YOU FIND, AND WILL DO MORE IN-HOUSE
TESTING. ╫E WILL THEN SEND YOU A GEO╨ROGRAMMER ╓2.0 ┬┼╘┴ 2 DISK, AND ROUND
TWO WILL HAVE BEGUN. ╫E EXPECT THE ENTIRE ┬ETA ╘EST PERIOD (ROUNDS ONE
AND TWO) TO LAST FIVE TO SIX WEEKS.
╫E DO NOT YET HAVE A DRAFT OF THE GEO╨ROGRAMMER ╓2.0 ╒SER'S ═ANUAL ┴DDENDUM
TO SEND YOU, SO THE INFORMATION ON THE FOLLOWING PAGES WILL HAVE TO
SUFFICE FOR THE NEXT FEW WEEKS. ╞ROM A USER-INTERFACE STANDPOINT,
THERE ARE FEW DIFFERENCES BETWEEN VERSIONS 1.0 AND 2.0, SO IF YOU HAVE
NEVER USED THE PRODUCT BEFORE, YOU CAN FOLLOW THE INSTRUCTIONS IN THAT TEXT.
╔F YOU HAVE BEEN USING GEO╨ROGRAMMER ╓1.0 OR ╓1.1 FOR SOME TIME, PLEASE
BE SURE TO TRY ASSEMBLING AND LINKING AND SOURCE FILES YOU'VE ALREADY
WRITTEN.
╔═╨╧╥╘┴╬╘: YOU WILL NOT BE ABLE TO INSTALL GEO─EBUGGER ON A 1571 DRIVE
WHICH IS CONFIGURED AS A 1571. ┘OU MUST RE-CONFIGURE THE DRIVE AS A 1541,
AND RE-OPEN THE GEO╨ROGRAMMER ╓2.0 DISK, BEFORE YOU CAN INSTALL GEO─EBUGGER.
╘HIS BUG WILL BE CORRECTED IN THE SOFTWARE YOU RECEIVE IN ROUND TWO.
╔F YOU HAVE ANY QUESTIONS REGARDING OUR ┬ETA ╘EST PROGRAM OR THE
GEO╨ROGRAMMER PRODUCT, PLEASE CONTACT ╦EVIN ┬OLAND, AND HE WILL
CONNECT YOU TO ME OR ONE OF THE OTHER TEAM MEMBERS.
╫ELCOME TO THE TEAM, AND THANKS FOR YOUR HELP!
┼RIC ┼. ─EL ╙ESTO
╟EO╨ROGRAMMER
╨ROJECT ╠EADER
╙╘┴╘┼ ╧╞ ╟┼╧╨╥╧╟╥┴══┼╥ ╓2.0
┬┼╘┴ ╘┼╙╘ ╥╧╒╬─ 1
GEO┴SSEMBLER:
╙HOULD BE FAIRLY SOLID. ┬E TOUGH ON IT.
GEO╠INKER:
╚AS SOME KNOWN BUGS, BUT SHOULD BE ABLE TO CORRECTLY LINK
╙┼╤, ├┬═, AND ╓╠╔╥ APPLICATIONS.
GEO─EBUGGER:
╙HOULD BE ROCK SOLID. ╘ORTURE IT. ═AKE IT DIE.
╙AMPLE ╟┼╧╙ ╞ILES:
┴RE ON THE DISK, AND HAVE BEEN UPGRADED TO INCLUDE ╟┼╧╙ 128
AND ╟┼╧╙ 64 ╓2.0 DEFINITIONS. ╬OT THAT BEFORE YOU INCLUDE
THESE FILES, YOU MUST SET THE CONSTANTS ├64 AND ├128 TO
╘╥╒┼ ($╞╞) OR ╞┴╠╙┼ ($00).
╙AMPLE╙EQ:
╬OT INCLUDED ON ┬ETA ╥OUND 1 DISK.
╙AMPLE╓LIR:
┴LL THE REQUIRED FILES ARE ON THE ┬ETA ╥OUND 1 DISK. ╬OTE
THAT THE ╙AM╓LIR┼QUATES FILE SETS THE ├64 AND ├128 CONSTANTS.
╘HESE ARE PRESENTLY SET SO THAT THE APPLICATION WILL
ONLY RUN UNDER ├64 ╟┼╧╙. ╔F YOU ARE TESTING ON A ├128, BE SURE
TO CHANGE THESE CONSTANT DEFINITIONS BEFORE YOU BEGIN.
┴LSO- THERE ARE SEVERAL NEW ADDITIONS TO THE ╙AMPLE╓LIR FILES,
SUCH AS SUPPORT FOR KEYBOARD SHORTCUTS IN THE MENUS. ┘OU CAN
EXPECT TO FIND SOME PRETTY OBVIOUS BUGS IN SOME OF THESE NEW
FEATURES.
╙AMPLE─┴:
╬OT INCLUDED ON ┬ETA ╥OUND 1 DISK.
╙AMPLE├┬═:
╘HIS IS A NEW SAMPLE FILE, TO DEMONSTRATE THE NON-╟┼╧╙ CAPABILITY
OF GEO─EBUGGER ╓2.0. ╬OT INCLUDED ON ┬ETA ╥OUND 1 DISK.
╟┼╧╨╥╧╟╥┴══┼╥ ╔═╨╥╧╓┼═┼╬╘╙
╔N ╓ERSION 2.0
GEO┴SSEMBLER:
ONE PROGRAM RUNS UNDER ╟┼╧╙ 64 ┴╬─ ╟┼╧╙ 128 (80 COLUMN ONLY ON 128)
FILE SELECTION ─┬ SCROLLS FASTER AND HOLDS 239 FILENAMES
IMPROVED OUTPUT FILE CREATION: FASTER ASSEMBLIES, DELETES PARTIAL
FILES AFTER DISK ERRORS
HAS .TEXT DIRECTIVE TO ASSEMBLE ASCII INTO ├┬═ TEXT CODES.
EXAMPLE: .TEXT "╘HIS IS TEXT FOR THE ├┬═ TEXT SCREEN"
├64 MODE ONLY:
WILL GENERATE UP TO 3584 CODE BYTES
MAX NUMBER OF MACRO DEFINITIONS: 100
SIZE OF MACRO STORAGE BUFFER: 3560
SYMBOL TABLE HOLDS 1151 SYMBOLS
├128 MODE ONLY:
WILL GENERATE UP TO 7670 CODE BYTES
MAX NUMBER OF MACRO DEFINITIONS: 389
SIZE OF MACRO STORAGE BUFFER: 12520
SYMBOL TABLE HOLDS 3208 SYMBOLS
GEO╠INKER:
ONE PROGRAM RUNS UNDER ╟┼╧╙ 64 ┴╬─ ╟┼╧╙ 128 (80 COLUMN ONLY ON 128)
FILE SELECTION ─┬ SCROLLS FASTER AND HOLDS 210 FILENAMES
IMPROVED OUTPUT FILE CREATION: FASTER LINKS, DELETES PARTIAL
FILES AFTER DISK ERRORS
IMPROVED .LNK FILE PARSING: ALLOWS MULTIPLE PAGE .LNK FILES,
GIVES MORE INFORMATIVE ERROR MESSAGES
.╙┘═ FILE CAN HAVE 60 LINES/PAGE
╓╠╔╥ LINKS: UP TO 21 MODULES (RESIDENT + 20 OVERLAY)
ALLOWS UP TO 20 .REL FILES PER MODULE (OR TOTAL IN ╙┼╤ LINK)
├64 MODE ONLY:
BUFFER FOR COMPACTED .╠╬╦ FILE HAS 3840 BYTES
CODE BUFFER IS 3584 BYTES
RESIDENT SYMBOL TABLE HOLDS 1274 SYMBOLS
SWAP MODULE SYMBOL TABLE HOLDS 850 SYMBOLS
DURING ╙┼╤ AND ├┬═ APPLICATION LINKS, COMBINES SYMBOL
TABLES TO ALLOW A TOTAL OF 2124 SYMBOLS
├128 MODE ONLY:
BUFFER FOR COMPACTED .╠╬╦ FILE HAS 3840 BYTES
CODE BUFFER IS 7670 BYTES
RESIDENT SYMBOL TABLE HOLDS 3217 SYMBOLS
SWAP MODULE SYMBOL TABLE HOLDS 1740 SYMBOLS
(STATE OF THE PRODUCT, CONTINUED...)
GEO─EBUGGER:
IMPROVED ERROR DETECTION WHEN PARSING .─┬═ FILES,
PRINTS PAGE AND LINE NUMBER WITH ERROR MESSAGE
CAN TOP-STEP OVER IN-LINE CALLS TO ╟┼╧╙ ROUTINES SUCH AS I_╥ECTANGLE
═INI ─EBUGGER (├64/├128)
OCCUPIES $3500-$5╞╞╞, PLUS $334-$3FF IN BANK 1
(HOLD ╥╒╬/╙╘╧╨ KEY DOWN WHILE RUNNING GEO─EBUGGER
TO INVOKE THE MINI-DEBUGGER.)
╙UPER ─EBUGGER (├64/├128 WITH ╥┼╒)
MACRO BUFFER IS 1024 BYTES
SYMBOL TABLE HOLDS 731 SYMBOLS
OCCUPIES SPACE IN ╥┼╒ BANK 0, PLUS $334-$3FF IN BANK 1
(╔F YOU HAVE A ╥┴═ ┼╪╨┴╬╙╔╧╬ ╒╬╔╘ ON YOUR SYSTEM,
THIS DEBUGGER WILL AUTOMATICALLY LOAD WHEN YOU RUN
GEO─EBUGGER. ┬Y HOLDING ╥╒╬/╙╘╧╨ OR ╙╨┴├┼ DOWN,
YOU CAN OVERRIDE THIS TO RUN THE ═INI-─EBUGGER OR ┬ACK╥AM
╙UPER-─EBUGGER.)
┬ACK╥AM ╙UPER ─EBUGGER (├128 ONLY)
(128 MODE HAS NEW "┬ACK╥AM ╙UPER─EBUGGER", WHICH HIDES IN ┬ACK╥AM.
╒SER CAN WRITE FULL-SIZED APPLICATIONS IN ╞RONT╥AM.)
├AN HANDLE 1000 SYMBOLS AND 1╦ OF MACRO DEFINITIONS.
MACRO BUFFER IS 1024 BYTES
SYMBOL TABLE HOLDS 910 SYMBOLS
OCCUPIES $2000-$9╞╞╞ IN ├128 BANK 0, PLUS $334-$3FF IN BANK 1
(╔F YOU HAVE AN ╥┼╒ ON YOUR ├128 SYSTEM, YOU MUST HOLD
THE ╙╨┴├┼ KEY DOWN WHILE RUNNING GEO─EBUGGER TO INVOKE THE
┬ACK╥AM ╙UPER-─EBUGGER.)
┴DDITIONAL TECHNICAL INFORMATION ON GEO─EBUGGER ╓2.0
(┘OU MIGHT FIND THIS INFORMATION INTERESTING.)
NO ╟┼╧╙ SCREEN ASSUMPTIONS:
DISPLAYS DEBUG INFORMATION ON 40-COLUMN SCREEN,
AND RETURNS TO WHATEVER SCREEN (AND SCREEN MODE)
WAS IN USE WHEN RUNNING USER CODE, OR WHEN ╞7 IS PRESSED
SEE BELOW ABOUT DEBUGGER'S SHADOW VARS FOR ╓╔├ PARAMETERS
NEW AND IMPROVED MEMORY READ/WRITE ROUTINE:
╔NTERCEPTS (AND REDIRECTS TO DEBUGGER SHADOW VARIABLES)
READS AND WRITES TO:
$0000 AND $0001 (REGISTERS WHICH CONTROL MEMORY MAP)
AREA OF ZERO PAGE WHICH IS USED BY DEBUGGER
MEMORY AREAS USED BY ╥┼╒ ╙UPER─EBUGGER (REDIRECTS
TO USER MEMORY SWAP AREA IN BANK #0 OF ╥┼╒)
SEVERAL ╓╔├ CHIP REGISTERS, INCLUDING $──00 (CIA2┬ASE),
WHICH CONTROLS ╓╔├ MEMORY MAP
ON 128: $─500-$─50┴ (MEMORY MANAGMENT UNIT)
$╞╞00-$╞╞04 (MORE MMU REGISTERS)
$─030 (1═╚┌/2═╚┌ SWITCH)
─ISALLOWS READS AND WRITES TO:
ALL ╥╧═ AREAS (SO NO BLEED THROUGH TO ╥┴═ OCCURS)
ANY AREA WHERE DEBUGGER CODE OR SYMBOLS ARE STORED
(5 DIFFERENT CASES HERE, DUE TO 3 DEBUGGER TYPES
ON 2 MACHINES.)
STACK AREA BELOW CURRENT ╙╨ (DEBUGGER IS USING)
PAGE 3 ╔╥╤/┬╥╦/╬═╔ VECTORS USED BY ╥╧═S
$╞╞╞9 AREA ╔╥╤/┬╥╦/╬═╔ VECTORS
RAM EXPANSION UNIT'S ─═┴ CONTROLLER, IF USING
╥┼╒ ╙UPER─EBUGGER
"CTAB" - EXTERNAL 1╦X4 ╥┴═ USED BY ╓╔├ CHIP IN TEXT
MODE. ╧N 128, THERE ARE TWO OF THESE. ─EBUGGER
USES CTAB #1, AND PREVENTS ╥/╫ TO IT. ╒SER IS
FREE TO USE CTAB #0.
╫HEN ACCESSING ╥┴═ IN 128 MODE, CALCULATES EFFECTIVE ADDRESS,
TAKING BANK NUMBER AND BANK SHARING STATUS INTO ACCOUNT.
╬EW AND IMPROVED CONTEXT SWITCH (SECTION OF CODE WHICH BRIDGES GAP
BETWEEN DEBUGGER AND USER CODE):
TRAPS INTERRUPTS WHICH OCCUR WHEN USER'S APPLICATION SWAPS ╥╧═
IN WITHOUT DISABLING INTERRUPTS; WARNS USER THROUGH
DEBUGGER MESSAGE.
ON 128 SYSTEM:
HANDLES BANK-TO-BANK SWITCHING REQUIRED TO
GET FROM EITHER BANK TO ONE OF 3 DEBUGGERS.
SAVES AND RESTORES PROCESSOR CLOCK SPEED 1═╚┌ / 2═╚┌
* ╔MPROVED ╟ET┬ / ╨UT┬ COMMAND: WORKS WITH 1571 AND 1581 DRIVES.
* ─ISASSEMBLES AND TOP-STEPS THROUGH IN-LINE CALLS TO ╟┼╧╙ CORRECTLY.
╒SER CAN DISABLE THIS OPTION.
* DISPLAYS ├╨╒_─┴╘┴ ($0001) OR ├ONFIG ($╞╞00) AS PRIMARY MEMORY MAP
REGISTER IN 64 AND 128 MODES RESPECTIVELY. ╘HIS AFFECTS
THE "╥" REGISTER DISPLAY COMMAND AND THE "╥┼╟" REGISTER
DISPLAY/MODIFY COMMAND.
┴DDITIONAL TECHNICAL INFORMATION ON GEO─EBUGGER ╓2.0 (CONTINUED)
═ORE ERROR CHECKING DURING FILE LOADS, WITH INFORMATIVE DIALOG BOXES:
EXTENSIVE ERROR CHECKS AND GOOD ERROR DIALOG BOXES FOR:
DEBUGGER MODULE SWAPS
USER APPLICATION LOADS
MACRO FILE LOADS
SYMBOL FILE LOADS
DISPLAYS INFORMATIVE ERROR DIALOG BOX FOR FORMAT ERRORS
IN GEO╫RITE MACRO DEFINITION FILES. ─ISPLAYS FILENAME,
ERROR MESSAGE, PAGE AND LINE NUMBER.
CAN DEBUG APPLICATIONS WHICH TRASH ╟┼╧╙
APPLICATION MUST HANDLE LOADING ITS OWN CODE IN OVER ╟┼╧╙ AREAS
APPLICATION MUST DISABLE INTERRUPTS OR SET UP ITS OWN
INTERRUPT SERVICE ROUTINE. ╫ILL HAVE TO BE CLEVER
TO PLACE HIS INTERRUPT VECTOR IN $334 AREA WHEN
HIS APPLICATION IS RUNNING UNDER THE DEBUGGER.
(╔ WILL SUPPLY THIS CODE IN THE NEW SAMPLE APP.)
╒NSEEN COMPLICATIONS WHICH ARE HANDLED:
BANK SWITCH CONCERNS DURING:
CONTEXT SWITCH
╩╙╥ COMMAND
╟ET┬ / ╨UT┬ COMMANDS
RBOOT
MAINTAINING SOFTWARE BREAKPOINTS
SINGLE STEP BREAKPOINT
┴ND ALL BUGS HAVE BEEN FIXED!
┴DDITIONAL TECHNICAL INFORMATION ON GEO─EBUGGER ╓2.0 (CONTINUED)
╚OW ╟EO─EBUGGER MANAGES MACHINE-DEPENDENT
MEMORY-MAP ENVIRONMENT INFORMATION
╘HE DEBUGGER CARRIES MEMORY-MAP ENVIRONMENT INFORMATION, WHICH IS MACHINE-
DEPENDENT, AROUND IN GENERIC VARIABLES SUCH AS APP┬ANK╔NFO1 AND APP┬ANK╔NFO2.
╘HIS WAY, THE ROUTINES WHICH JUST MOVE THIS INFORMATION AROUND (BUT DON'T
DIRECTLY USE IT) ARE MACHINE-INDEPENDENT.
┼XECUTION ┼NVIRONMENT:
╫HEN THE DEBUGGER STOPS EXECUTION OF AN APPLICATION (╥┼╙╘╧╥┼ PRESSED OR
╙┬╨ HIT), THE USER'S "EXECUTION ENVIRONMENT" IS SAVED. ╘HIS INCLUDES:
PROCESSOR REGISTER AND FLAG VALUES
╨├ ADDRESS
CURRENT BANK INFORMATION
ZERO PAGE VARIABLES
STACK INFORMATION
╫E CALL THE ╨├ ADDRESS AND ITS MEMORY-MAP INFORMATION THE "┼XECUTION
┼NVIRONMENT" OR MORE SIMPLY, THE "╨├ POINTER".
╓IEWING ┼NVIRONMENT:
╧NCE THE DEBUGGER HAS STOPPED AN APPLICATION, THE "VIEWING ENVIRONMENT" IS THE
SAME AS THE "EXECUTION ENVIRONMENT". ╘HIS MEANS THAT ALL OF THE MEMORY
EXAMINATION AND MODIFICATION COMMANDS USE THE SAME MEMORY-MAP INFORMATION AS
THE ┼XECUTION ┼NVIRONMENT.
╘HROUGH USE OF THE ╙┼╘╓╔┼╫ COMMAND, THE VIEWING ENVIRONMENT CAN BE CHANGED.
┘OU CAN SET UP A NEW MEMORY-MAP CONFIGURATION, AND THEN USE THE MEMORY
EXAMINATION AND MODIFICATION COMMANDS TO READ/WRITE MEMORY IN THIS NEW
CONFIGURATION.
╫HEN YOU GIVE THE ╟╧ COMMAND TO RESUME EXECUTION, THE DEBUGGER RESTORES THE
EXECUTION ENVIROMENT, AND YOUR PROGRAM CONTINUES EXECUTION.
╫E CALL THE VIEWING ADDRESS AND ITS ENVIRONMENT THE "╠├ POINTER".
-------------------------------------------------------------------------------
┴SPECTS OF ╟EO─EBUGGER WHICH MUST CHANGE ACCORDING TO MACHINE-DEPENDENCIES
IN ╓2.0, TO REMAIN COMPATIBLE WITH ╓1.0. (╦ILL THESE IN ╓3.0.)
╥EGISTER COMMAND:
DISPLAYS ╨├ ADDRESS, HIGHLIGHTS ADDRESS IF EFFECTIVE ADDRESS OF
╨├ (CONSIDERING ╨├ BANK INFO) IS BANK 0.
DISPLAYS ├╨╒_─┴╘┴ VALUE (╔T REALLY SHOULD NOT DO THIS ANYMORE,
BUT ╔ AM TRYING TO MAINTAIN COMPATABILITY WITH ╓1.
64: READ DIRECTLY FROM APP┬ANK╔NFO1
128: [7-3,0]: DIRECT READ FROM MEMORY
[21]: SHADOW WITH APP├╨╒_┬21
┴DDITIONAL TECHNICAL INFORMATION ON GEO─EBUGGER ╓2.0 (CONTINUED)
╥EGISTER ╧PEN ├OMMAND:
..INCLUDES ══ REGISTER: IS ├╨╒_─┴╘┴. (╘O BE COMPATIBLE WITH ╓1)
64: DIRECTLY READ/WRITE TO APP┬ANK╔NFO1
128: [7-3,0]: DIRECTLY ╥/╫ TO MEMORY
[21]: SHADOW WITH APP├╨╒_┬21
-------------------------------------------------------------------------------
┴SPECTS OF ╟EO─EBUGGER WHICH ARE MACHINE-INDEPENDENT.
═EMORY EXAMINATION AND MODIFICATION:
BANK COMMAND: AFFECTS ╠├'S BANK INFO: CUR┬ANK╔NFO1 AND CUR┬ANK╔NFO2
OPEN MODES: USES ╠├'S BANK INFO
HIGHLIGHTS ADDRESS IF IS IN PHYSICAL BANK 0
DUMP COMMAND: USES ╠├'S BANK INFO
HIGHLIGHTS ADDRESS IF IS IN PHYSICAL BANK 0
MOVE/FILL/DIFF/FIND: USES ╠├'S BANK INFO
HIGHLIGHTS ADDRESS IF IS IN PHYSICAL BANK 0
@ AND @@ OPERATORS: USES ╠├'S BANK INFO
╙INGLE AND ╘OP-STEP BREAKPOINTS:
MAINTAIN THEIR OWN BANK INFORMATION
(COPIED FROM ╨├ BANK INFO BEFORE EXECUTION BEGUN)
╙OFTWARE ┬REAKPOINTS:
MAINTAIN THEIR OWN BANK INFORMATION
(COPIED FROM ╨├ BANK INFO BEFORE EXECUTION BEGUN)
╨├ COMMAND:
WITHOUT ARGUMENT: COPY ╨├ ADDRESS AND BANK INFO TO ╠├
(RESTORES EXECUTION ENVIRONMENT)
WITH ARGUMENT: (SAME AS SETTING ╨├ IN OPEN MODE)
SET ╨├ ADDRESS = ARGUMENT
SET ╨├ BANK INFO = ╠├ BANK INFO
┴DDITIONAL TECHNICAL INFORMATION ON GEO─EBUGGER ╓2.0 (CONTINUED)
(╘╚╔╙ ╨╧╥╘╔╧╬ ╧╞ ╘╚┼ ╟┼╧─┼┬╒╟╟┼╥ ╘┼╙╘ ╠╔╙╘ ╔╙ ╙╒╨╨╠╔┼─ ╘╧ ╟╔╓┼
┘╧╒ ┴╬ ╔─┼┴ ╧╞ ╚╧╫ ╘╚┼ ═┼═╧╥┘-┼╬╓╔╥╧╬═┼╬╘ ═┴╬┴╟┼═┼╬╘ ├╧══┴╬─╙ ╫╧╥╦.)
4.10 ═EMORY-═AP ┼NVIRONMENT ═ANAGEMENT
4.10.1 ╔╬╔╘╓╔┼╫ COMMAND: COPIES THE MEMORY-MAP ENVIRONMENT INFO FROM THE
EXECUTION VARIABLES (╨├) TO THE DISPLAY/MODIFY VARIABLES (╠├).
╒SED WHEN USER HAS BEEN VIEWING DIFFERENT BANKS, AND NOW WANTS TO EXAMINE
THE MEMORY MAP AS IT WAS WHEN WE STOPPED EXECUTION.
64 128 128
╥┼╒ ╥┼╒ ┬┴├╦
___ ___ ___ INITVIEW NO ARGUMENTS. ─ISPLAYS ╨├ LINE
AND ENVIRONMENT INFO.
___ ___ ___ NOTE THAT ╨├ COMMAND HAS SAME EFFECT OF COPYING ENVIRONMENT
INFORMATION, BUT DOES NOT DISPLAY MEMORY-MAP INFO WHEN DONE.
___ ___ ___ VERIFY THAT "╔╓" COMMAND ALIAS WORKS
4.10.2 ╙┼╘╓╔┼╫ COMMAND: SETS THE MEMORY-MAP ENVIRONMENT FOR THE
DISPLAY/MODIFY COMMANDS. ─ISPLAYS NEW ENVIRONMENT INFO IF NO ERROR.
FORMAT: SETVIEW <═EM═AP1> [, <═EM═AP2> ]
___ ___ ___ SETVIEW <═EM═AP1> SETS APP═EM═AP1.
___ ___ ├128: SHOULD NOT AFFECT APP═EM═AP2
SETVIEW <═EM═AP1>,<═EM═AP2>
___ ___ ├128: SETS APP═EM═AP1 AND APP═EM═AP2.
___ ___ ├128: VERIFY THAT ┬7 AND ┬6 ARE CLEARED IN APP═EM═AP2
(THIS VARIABLE MUST HAVE 0'S IN THOSE POSITIONS)
___ ___ ___ DISPLAYS NEW ENVIRONMENT INFO CORRECTLY
___ ___ ___ ERROR IF NO ARGUMENTS GIVEN
___ ___ ___ ERROR IF EITHER VALUE GREATER THAN 255.
___ ___ ___ VERIFY THAT "╙╓" COMMAND ALIAS WORKS
4.10.3 ╓╔┼╫ COMMAND: DISPLAYS CURRENT MEMORY-MAP ENVIRONMENT INFO.
___ ___ ___ VIEW NO ARGUMENTS REQUIRED
___ ├64: ONLY DISPLAYS 1ST OF 2 VALUES ON EACH LINE
___ ___ ├128: DISPLAYS BOTH VALUES ON EACH LINE
___ ___ ___ VERIFY THAT "╓╫" COMMAND ALIAS WORKS
4.10.4 ╒╙┼╓╔┼╫ COMMAND: FORCES THE DISPLAY/MODIFY ENVIRONMENT UPON THE
EXECUTION ENVIRONMENT. ─ISPLAYS NEW INFO WHEN FINISHED.
___ ___ ___ USEVIEW NO ARGUMENTS REQUIRED
___ ___ ___ VERIFY THAT "╒╓" COMMAND ALIAS WORKS
4.10.5 ┬0 COMMAND: SET DISPLAY/MODIFY ENVIRONMENT VARIABLE SO THAT ALL OF
BANK 0 IS VISIBLE. ─ISPLAYS NEW INFO WHEN FINISHED.
___ ___ ___ B0 NO ARGUMENTS REQUIRED
4.10.6 ┬1 COMMAND: SET DISPLAY/MODIFY ENVIRONMENT VARIABLE SO THAT ALL OF
BANK 1 IS VISIBLE. ─ISPLAYS NEW INFO WHEN FINISHED.
___ ___ ___ B1 NO ARGUMENTS REQUIRED
4.10.7 ═EMORY-═AP ┼NVIRONMENT ═ANAGEMENT...
╘┼╙╘: VIEW ENVIRONMENT SAME AS EXECUTION ENVIRONMENT WHEN SOFTWARE BREAKPOINT
IS HIT OR ╥┼╙╘╧╥┼ IS PRESSED.
___ ___ ___ USE VIEW COMMAND, VALUES ON TWO LINES SHOULD BE EQUAL.
┴DDITIONAL TECHNICAL INFORMATION ON GEO─EBUGGER ╓2.0 (CONTINUED)
╘┼╙╘: THE FOLLOWING COMMANDS, MAKING SURE THAT THEY USE THE VIEW ENVIRONMENT
MEMORY-MAP INFORMATION WHEN ACCESSING MEMORY.
___ ___ ___ "┴" OPEN MODE
___ ___ ___ "═" OPEN MODE
___ ___ ___ DEPOSITING VALUES WHEN IN AN OPEN-MODE
___ ___ ___ @ AND @@ OPERATORS IN EXPRESSIONS
___ ___ ___ ─╒═╨
___ ___ ___ ─╔╙
___ ___ ___ ╬
___ ___ ___ ╫
___ ___ ___ ╨╥╔╬╘
___ ___ ___ ╞╔╠╠ / ├╧╨┘ / ─╔╞╞ / ╞╔╬─
╘┼╙╘: THAT EXECUTION ENVIRONMENT IS USED WHEN EXECUTION IS RE-STARTED.
___ ___ ___ NEED TEST CODE FOR THIS...
╘┼╙╘: (├128 ONLY) IN THE FOLLOWING COMMANDS, AN ADDRESS SHOWS UP HIGHLIGHTED
IF THE EFFECTIVE ADDRESS (CONSIDERING ╥┴═ SHARING) IS IN BANK 0.
╚INT: TO SET ╠├ TO BANK 0, USE ┬0 COMMAND. ╘O SET ╨├ TO BANK 0, USE ┬0 FOLLOWED
BY ╒╙┼╓╔┼╫ COMMAND.
___ ___ "╥"
___ ___ "┴" OPEN MODE
___ ___ "═" OPEN MODE
___ ___ ─╔╙, ╫, ╬, ETC.
___ ___ ─╒═╨
___ ___ ─╔╞╞
___ ___ ╞╔╬─
___ ___ ╚╔╙╘╧╥┘
------------------------------------------------------------------------------
╓1.000 11/2/87 ╙ENT TO ╚╠╙, BUT NEVER MASTERED DUE TO 128 CRASHES.
├╧═╨╠┼╘┼ ═┴╙╘┼╥ ╥┼╠┼┴╙┼ ╘┴╨┼ ═┴─┼ 11/11/87.
╘HIS ╓┼╥╙╔╧╬ 1.0 (11/2/87) RELEASE WAS SENT TO ╚╠╙, BUT WAS NEVER MASTERED
BECAUSE ┬RIAN HAD ME CHANGE THE 128 ENABLE BIT IN EACH APPLICATION'S HEADER
BLOCK. ╙EE ╓1.010 FOR LIST OF KNOWN BUGS.
------------------------------------------------------------------------------
╓1.010 11/18/87 ╙ENT TO ┌═┴╟. ─UPLICATED AS ╟EO╨ROGRAMMER ╓1.0.
4000 SHIPPED WITHOUT ERRATA SHEET.
┼RRATA ITEMS POSTED TO ╤╠╔╬╦ 1/25/88
╧NLY DIFFERENCE FROM ╓1.000: BITS SET IN HEADERS SO DOES NOT CRASH ╟┼╧╙ 128.
(╔TEMS MARKED ╨┴╘├╚ WERE CORRECTED WITH ╨ATCH2.88 PROGRAM TO CREATE ╓1.1.
╔TEMS MARKED ╠┴╘┼╥ WERE NOT FIXED UNTIL ╓2.0.)
╦NOWN BUGS IN 11.18 RELEASE, WHICH WERE CORRECTED WITH ╨ATCH2.88 PROGRAM.
╠INKER HAS TROUBLE CREATING ╓╠╔╥ FILES. ┬UG: VARIABLE CALLED
FILE╫RITTEN NOT SET TO ╘╥╒┼, SO ┬┴═ IS RE-READ FROM DISK INSTEAD
OF USING MORE RECENT ┬┴═ WHICH IS IN MEMORY.
┴SSEMBLER HAS TROUBLE WITH LOCAL LABELS AFTER PARSING A BITMAP OR
ROUTINE LONGER THAN 254 BYTES. ┬UG: TWO BRANCHES SKIP TOO FAR AND
MISS CODE WHICH RESETS A VARIABLE.
┴SSEMBLER HAS TROUBLE WITH BITMAPS. ┬UG: UNCOMPACTING WRONG.
╠INKER HAS TROUBLE WITH .RAMSECTS IN ╥ESIDENT AND ╙WAP MODULES.
╦NOWN BUGS IN 11.18 RELEASE, NOT CORRECTED UNTIL ╓2.0:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
┴SSEMBLER (THINGS TO MENTION IN ERRATA LIST):
╔N ASSEMBLER, IF ENCOUNTER DISK ERROR, SHOULD ATTEMPT
TO CLOSE ANY OPENED FILES SO DISK IS NOT INCONSISTENT.
┼╥╥┴╘┴: WARN THEM, TELL THEM TO DELETE FILES AND VALIDATE DISK.
┴SSEMBLER HAS TROUBLE UNCOMPACTING BITMAPS OF LESS THAN 18 PIXELS HEIGHT
┼╥╥┴╘┴: DON'T DO IT
╔F A ROUTINE IS LARGE ENOUGH TO COME CLOSE TO THE END OF CODE┬UFFER,
IT COULD OVERFLOW INTO THE ┼XTERNAL ╥EFERENCE ┬UFFER.
┼╥╥┴╘┴: KEEP ROUTINES SMALLER THAN APPROX 250 BYTES (ASK TED)
┴SSEMBLER: DOES NOT PRINT CORRECT PAGE NUMBER IN ERROR MESSAGES
REFERRING TO BRANCH INSTRUCTIONS. ┴LSO COUNTS MACRO EXPANSION LINES,
SO MOST ERROR MESSAGES ARE OFF.
┼╥╥┴╘┴: IF YOU GET A LOCAL LABEL ERROR, CONSIDER THAT IT MIGHT
BE ON THE PREVIOUS PAGE (OR PAGE BEFORE THAT).
╧THER ERRORS: CONSIDER MACRO EXPANSIONS WHEN COUNTING LINE NUMS.
╫HEN ASSEMBLING ╠─┴ ┌╨,┘ (WHICH DOES NOT EXIST), ASSEMBLER SHOULD
SUBSTITUTE ╠─┴ ┴┬╙,┘.
┼╥╥┴╘┴: WARN AND TELL THEM HOW TO GET AROUND IT.
LDA #╥ELOC╓ALUE OR .BYTE ╥ELOC╓ALUE PASSES RELOCATION
POINTER TO LINKER WHICH TRASHES WORD IN CODE. ┴SSEMBLER SHOULD
GENERATE ERROR MESSAGE.
┼╥╥┴╘┴: USE LOW BYTE OPERATOR: "[" BEFORE ANY SUCH REFERENCES.
"*" OPERATOR ALWAYS GETS PSECT VALUE, SO DOES NOT WORK IN RAMSECT OR
ZSECT AREAS.
┼╥╥┴╘┴: WARN THEM
╔N ASSEMBLER, SCREEN COLORS NOT SET CORRECTLY, SO CAN SEE ╔NSORT WORKING
BY CHANGING YOUR SCREEN COLORS.
┼╥╥┴╘┴: TELL THEM TO CLOSE THEIR EYES DURING ASSEMBLIES.
─OES NOT LOOK FOR ╟EO╫RITE CORRECTLY WHEN OPENING ERROR FILE:
SHOULD LOOK FOR PERMANENT NAME STRING.
┼╥╥┴╘┴: DO NOT RENAME YOUR GEO╫RITE.
┴SSEMBLER: (THINGS ╔ WAS TOLD ABOUT TOO LATE TO MENTION THEM IN THE ERRATA LIST)
"+" OPERATOR DOES NOT WORK IN UNARY CASE
╨HASE ┼RROR: JSR $0045 DOES NOT ASSEMBLE CORRECTLY.
╫HEN AN UNRESOLVED SYMBOL IS USED AS THE SECOND OPERAND IN AN EXPRESSION
THAT INVOLVES A DIVISION OR A MODULUS, THE EXPRESSION WILL NOT BE PASSED
TO THE LINKER. ╔NSTEAD, IT WILL GENERATE AN ERROR IN THE ASSEMBLER.
┴SSEMBLER: (THINGS NOT TO MENTION IN ERRATA LIST)
┴SSEMBLER'S BITMAP DECOMPACTION CODE DOES NOT HANDLE ┬IG├OUNT VALUES
CORRECTLY. ╬OT A BIG PROBLEM: PHOTO SCRAPS UP TO ╟┼╧╙ ╓1.3 WORK OK.
╔F THERE IS ANY TEXT AFTER A .ENDM, PRODUCES "╚IDDEN ┼RROR".
╞ILE SELECTION ─┬ BUG: COULD RUN PROGRAM WITHOUT CHOOSING A FILE.
┴SSEMBLER SHOULD NOT PASS ╨ASS1, ╨IC╫, AND ╨IC╚ SYMBOLS TO LINKER.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
╠INKER: (THINGS TO MENTION IN ERRATA LIST)
╔N LINKER, IF ENCOUNTER DISK ERROR, SHOULD ATTEMPT
TO CLOSE ANY OPENED FILES SO DISK IS NOT INCONSISTENT.
┼╥╥┴╘┴: WARN THEM, TELL THEM TO DELETE FILES AND VALIDATE DISK.
╠INKER: WHEN USING ╞REE┬LOCK TO DELETE HEADER BLOCKS FROM ├┬═ FILES,
DOES NOT REALIZE THAT 1.2 KERNAL DOES NOT HAVE CODE FOR '╞REE┬LOCK'.
┼╥╥┴╘┴: WARN THEM, SUGGEST THEY UPGRADE TO ╟┼╧╙ 1.3.
╠INKER: DOES NOT CORRECT FOR ILLEGAL .REL FILENAMES. ─OES NOT GIVE
CORRECT ERROR FOR .REL FILE NOT FOUND. ─OES NOT STOP AFTER FIRST
10 .REL FILES IN A MODULE, PRODUCING A BUG.
┼╥╥┴╘┴: WARN THEM NOT TO HAVE MORE THAN 10 .REL FILES PER MODULE.
╧N ONE-DRIVE SYSTEM, LINKER DOES NOT DISPLAY "SYM FILE" DIALOG BOX.
┼╥╥┴╘┴: TELL THEM TO BUY A SECOND DRIVE.
╔N LINKER, SCREEN COLORS NOT SET CORRECTLY, SO CAN SEE ╔NSORT WORKING
BY CHANGING YOUR SCREEN COLORS.
┼╥╥┴╘┴: TELL THEM TO CLOSE THEIR EYES DURING ASSEMBLIES.
─OES NOT LOOK FOR ╟EO╫RITE CORRECTLY WHEN OPENING ERROR FILE:
SHOULD LOOK FOR PERMANENT NAME STRING.
┼╥╥┴╘┴: DO NOT RENAME YOUR GEO╫RITE.
╠INKER: (THINGS ╔ WAS TOLD ABOUT TOO LATE TO MENTION THEM IN THE ERRATA LIST)
"+" OPERATOR DOES NOT WORK IN UNARY CASE, AND "//" OPERATOR DOES
NOT WORK.
┼╥╥┴╘┴: ╔ DIDN'T HEAR ABOUT THIS UNTIL IT WAS TOO LATE.
╠INKER: (THINGS NOT TO MENTION IN ERRATA LIST)
╠INKER IS NOT CLEARING ┌╨ FLAG BIT, SO IN DEBUGGER SOME SYMBOLS
HAVE A GRAPHICS CHARACTER IN POSITION 3.
╠INKER DOES NOT STOP AT 99 ERRORS.
╞ILE SELECTION ─┬ BUG: COULD RUN PROGRAM WITHOUT CHOOSING A FILE.
╫HEN .LNK FILE IS WRITE-PROTECTED, LINKER DISPLAYS ─┬. ├LICK ON IGNORE
TO CONTINUE.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
─EBUGGER: (MENTION IN ERRATA LIST:)
SOME SYMBOLS SHOW UP WITH GRAPHICS CHAR IN POSITION 3. ╔S REALLY
A LINKER BUG.
┼╥╥┴╘┴: WARN THEM, SUGGEST THEY USE * WILDCARD DURING SEARCHES.
─EBUGGER: (DO NOT MENTION IN ERRATA LIST:)
DEBUGGER FILE-SELECT ─┬ DOES NOT DISPLAY WRITE-PROTECTED FILES
DEBUGGER DOES NOT LOAD ╨╥╟ FILES WHICH ARE WRITE-PROTECTED CORRECTLY
DEBUGGER IS NOT SAVING OR RESTORE DESK╘OP'S ╥╧═ VECTORS ($314-$318)
CORRECTLY. ╔S NOT PREVENTING WRITES TO $314-$315. ╬OT A BIG
PROBLEM: MY VECTORS AT $314 AND $316 ARE THE SAME ANYWAY.
╞IXED 2/1/88 BY CORRECTING BAS┬╥╦╓EC AND BAS╔╥╤╓EC IN CONSTANTS FILE.
╬EW CODE INSTALLED IN ═AY TO HANDLE THIS DIFFERENTLY.
╥┼╒ ╙UPER─EBUGGER ONLY ALLOWS 768 SYMBOLS, WHERE IT COULD HAVE 870.
╥┼╒ ╙UPER─EBUGGER DOES NOT GETB/PUTB FROM 1571 DRIVE CORRECTLY.
IF YOU HOLD ╙╘╧╨ KEY DOWN WHEN DEBUGGER TURNS ON TEXT SCREEN
DURING INITIAL BOOT SEQUENCE, IT ABORTS ITS INIT CYCLE,
AND LEAVES YOU AT THE COMMAND PROMPT WITH THINGS SCREWY.
╬OTE: ┬OTH MONITORS IN ╟EO─EBUGGER HAVE AN UNUSED ROUTINE WHICH
TAKES 18 BYTES. ╟╧╧─ ╠╧├┴╘╔╧╬ ╞╧╥ ╨┴╘├╚ ╙╒┬╥╧╒╘╔╬┼╙!
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
╙AMPLE ╞ILES: (MENTION IN ERRATA LIST)
╔N ╙AM╓LIR.LNK, SHOULD HAVE $3000 INSTEAD OF $5000 FOR VARIABLE AREA.
(CAUSES MINI-DEBUGGER TO CRASH)
╔N ╙AM╙EQ.LNK, SHOULD HAVE $3000 INSTEAD OF $5000 FOR VARIABLE AREA.
(─OES NOT CAUSE MINI-DEBUGGER TO CRASH BECAUSE NO VARS ARE USED.)
╔N ╙AM╙EQ AND ╙AM╓LIR╥ES, "╓┼╥╘╔├┴╠" UNDER ═ENU╘ABLE SHOULD BE
"╙╒┬_═┼╬╒".
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
═ANUAL: (MENTION IN ERRATA)
.HEADER STRUCTURES ARE CHECKED FOR 12 STATEMENTS, NOT 11.
─EBUGGER IS NOT AS ISOLATED AS WE MAKE IT SOUND: STILL USES ╟┼╧╙
RAM EXPANSION ROUTINES.
─EBUGGER USES $340-$3FF, NOT $350-$3FF.
┴╨╨_╥┴═ == $400 HAS BEEN CHANGED TO ┴╨╨_╥┴═ = $400.
╥UNTO (RT) COMMAND WILL ONLY DISPLAY ╟┼╧╙ SCREEN IF
OPTION 5 IS ENABLED (G1 COMMAND).
╘HE SAMPLE APPLICATION CANNOT BE RE-RUN WITH GO $400.
╨AGE 7-11 INCORRECT IN STATING THAT RUNTO WILL SHOW SCREEN.
╨AGE 8-1 THE ┬RITISH POUND CHARACTER IS A SINGLE KEY
(NO NEED TO PRESS ├= KEY).
╙AMPLE╓LIR DOES NOT DO ANY ERROR CHECKING WHEN TRYING TO
FIND "╙AMPLE╓LIR" ON DISK. ╔F THEY ARE NOT CAREFUL WHEN
CHANGING APPLICATION'S NAME, WILL NOT LOAD CORRECTLY.
╫ARN PEOPLE THAT USE OF ╨ASS1 IS DANGEROUS; ╘ELL THEM TO
MAKE SURE THEY HAVE A .PSECT AFTER INCL. ZP VARS FILE.
═ANUAL: (DO NOT MENTION)
═AY WANT TO EXPLAIN A LITTLE BIT ABOUT INTERRUPT TIMING,
OR "WHY MOUSE─ATA CHANGES".
------------------------------------------------------------------------------
╓1.100 2/88 ╘HIS VERSION IS ACTUALLY ╓1.010 AFTER THE
╨ATCH2.88 PROGRAM HAS MODIFIED THE ┴SSEMBLER
AND ╠INKER. ╨ATCH2.88 DISTRIBUTED THROUGH
╤UANTUM╠INK, AND ╓1.100 ═ASTER DISK CREATED
BY RUNNING ╨ATCH2.88 ON ╓1.010 ═ASTER DISK.
╘HIS ╓1.100 ═ASTER DISK DUPLICATED BY ┌═AG,
COPIES SENT FREE OF CHARGE TO REGISTERED OWNERS
WHO REQUESTED IT.
------------------------------------------------------------------------------
╓2.000 ┴PRIL 1988 ├64/├128 VERSION, WITH MANY IMPROVEMENTS
AND BUG FIXES.
╘╚╔╙ ╔╙ ┴ ╤╒╔├╦ ╠╔╙╘; SEE "VERSION╓2" FILE FOR A SUMMARY.
┴SSEMBLER ╔MPROVEMENTS:
RUNS UNDER ╟┼╧╙ 64 AND ╟┼╧╙ 128 (IN 80 COLUMN MODE)
ENDING ─┬ HAS ICON TO RUN LINKER
HAS .TEXT DIRECTIVE TO ASSEMBLE ASCII INTO ├┬═ TEXT CODES.
╠INKER ╔MPROVEMENTS:
RUNS UNDER ╟┼╧╙ 64 AND ╟┼╧╙ 128 (IN 80 COLUMN MODE)
ALLOWS UP TO 20 .REL FILES PER MODULE
ENDING ─┬ HAS ICON TO RUN DEBUGGER
─EBUGGER ╔MPROVEMENTS:
╙AMPLE╞ILES ╔MPROVEMENTS:
╬EW WARNINGS FOR MANUAL:
┴SSEMBLING FILES UNDER ├128 AND LINKING THEM UNDER ├64--
DOES ╠INKER CHECK FOR TABLES WHICH ARE TOO LARGE?
------------------------------------------------------------------------------
╘ECHNICAL ╧VERVIEW OF ╔MPORTANT ─IFFERENCES
┬ETWEEN ╟EO╨ROGRAMMER ╓ERSIONS
┴SSEMBLER:
╙INCE CODE RECORD, XREF RECORD, RELOC RECORD, AND ERROR FILE PAGES
ARE WRITTEN OUT BLOCK BY BLOCK, WE ARE NOT CONCERNED WITH BUFFER SIZES.
═ACRO TEXT STORAGE SIZE:
╓1.0 2╦
╓2.0 (64 MODE) 3560
╓2.0 (128 MODE) 12520
╙YMBOL TABLE SIZE:
╓1.0 3017+7670 = 10687 (1068 SYMBOLS)
╓2.0 (64 MODE) 11510 (1151 SYMBOLS)
╓2.0 (128 MODE) 32080 (3208 SYMBOLS)
─OES NOT RUN IN 128 40-COLUMN MODE BECAUSE ALL ─═┴ WORK IN
BACKRAM CAUSES 40-COLUMN SCREEN TO FLICKER BADLY.
╠INKER:
╪REF AND ╥ELOC POINTERS ARE READ BLOCK-BY-BLOCK FROM RECORDS,
SO WE ARE NOT CONCERNED ABOUT BUFFER SIZES.
├ODE BUFFER SIZE (FOR ONE .REL'S CODE RECORD)
╓1.0 6608
╓2.0 (64 MODE) 3584
╓2.0 (128 MODE) 7670
╥ESIDENT MODULE SYMBOL TABLE SIZE:
╓1.0 10╦ = 10240 (1024 SYMBOLS)
╓2.0 (64 MODE) 12740 (1274 SYMBOLS)
╓2.0 (128 MODE) 32170 (3217 SYMBOLS)
╙WAP MODULE SYMBOL TABLE SIZE:
╓1.0 8╦ = 8192 (819 SYMBOLS)
╓2.0 (64 MODE) 8500 (850 SYMBOLS)
╓2.0 (128 MODE) 17400 (1740 SYMBOLS)
╙EQUENTIAL ┴PPS:
╓1.0 10╦ (YOU MIGHT THINK IS 10╦ + 8╦,
BUT THERE IS A BUG: IS ONLY 10╦)
╓2.0 (64 MODE) 21240
╓2.0 (128 MODE) 32170
(BACKRAM ONLY. ═ATT╙ORT TO USE BOTH
BANKS (GIVING 48╦) WOULD BE A MESS.)
╬UMBER OF .REL FILES PER MODULE:
╓1.0 10
╓2.0 (64/128) 20
├REATING ╟EO╫RITE SYM FILES:
FOR EACH .DBG RECORD:
READ BLOCK BY BLOCK INTO FRONTRAM AND MOVE TO BACK
SORT ENTIRE IN BACK
FOR EACH SYM IN BACK
COPY SYM TO FRONT
WRITE TO 5╦ PAGE BUFFER (╞╟ SCREEN AREA?)
WRITE OUT 5╦ BUFFER AS PAGE
─OES NOT RUN IN 128 40-COLUMN MODE BECAUSE ALL ─═┴ WORK IN
BACKRAM CAUSES 40-COLUMN SCREEN TO FLICKER BADLY.
╟EO─EBUGGER:
GEO╨ROGRAMMER ╓2.0 FOR ├64 AND ├128
╒PGRADE ╧FFER
╙EPTEMBER, 1988
─EAR GEO╨ROGRAMMER USER:
╧UR LATEST RELEASE OF THE GEO╨ROGRAMMER PACKAGE, GEO╨ROGRAMMER ╓2.0,
WILL SOON BE AVAILABLE. ╫E CAN OFFER YOU, AS A REGISTERED GEO╨ROGRAMMER OWNER,
THIS NEW PRODUCT FOR THE LOW PRICE OF $╪╪.╪╪. ╫E HAVE REWRITTEN MUCH OF THE
ORIGINAL SOFTWARE, TAKING YOUR SUGGESTIONS INTO ACCOUNT, AND ADDING SOME
NEW FEATURES.
╧VERALL ╨RODUCT ╔MPROVEMENTS:
- GEO╨ROGRAMMER ╓2.0 SUPPORTS THE ├OMMODORE 128 AND 128─ COMPUTERS.
GEO┴SSEMBLER, GEO╠INKER, AND GEO─EBUGGER NOW RUN UNDER ╟┼╧╙ 128
AT THE FASTER 2═╚┌ CLOCK RATE, USING THE 80-COLUMN SCREEN AND
ADDITIONAL MEMORY.
- GEO╨ROGRAMMER ╓2.0 IS FULLY COMPATIBLE WITH ALL VERSIONS
OF ╟┼╧╙: ╓1.2, ╓1.3, AND ╓2.0, AND WITH THE NEW 1581 DISK DRIVE.
- IN BOTH ├64 AND ├128 MODES, GEO╨ROGRAMMER ╓2.0 RUNS FASTER AND MORE
EFFICIENTLY. ┼RROR DETECTION HAS BEEN IMPROVED, AND MORE INFORMATIVE
ERROR MESSAGES ARE PROVIDED. ╞ILE SELECTION HAS BEEN STREAMLINED.
- THE THREE SAMPLE APPLICATIONS HAVE BEEN UPGRADED TO SUPPORT THE
├128, AND TO ILLUSTRATE MORE ╟┼╧╙ PROGRAMMING CONCEPTS SUCH AS
KEYBOARD SHORTCUTS.
- THE ╟┼╧╙ "INCLUDE" FILES HAVE BEEN UPDATED TO REFLECT ╟┼╧╙ ╓2.0
INFORMATION.
- GEO╨ROGRAMMER ╓2.0 INCLUDES AN ADDITIONAL SAMPLE APPLICATION,
WHICH DEMONSTRATES HOW YOU CAN DEVELOP "├┬═" APPLICATIONS
WHICH DO NOT REQUIRE ╟┼╧╙ TO RUN.
╔MPROVEMENTS IN GEO┴SSEMBLER ╓2.0:
- GEO┴SSEMBLER ╓2.0 WILL READ GEO╫RITE SOURCE FILES FROM ALL VERSIONS
OF GEO╫RITE, UP TO ╓2.1.
- NEW .TEXT DIRECTIVE CONVERTS ASCII TEXT STRINGS DIRECTLY INTO
├OMMODORE SCREEN CODES.
═AXIMUM ═AXIMUM
┴SPECT OF GEO┴SSEMBLER ╓2.0 IN ├64 ═ODE IN ├128 ═ODE
--------------------------------------- --------------- ------------
SYMBOL DEFINITIONS: 1151 SYMBOLS 3208 SYMBOLS
MACRO DEFINITIONS: 100 MACROS 389 MACROS
OR 3560 BYTES OR 12520 BYTES
CODE BYTES GENERATED PER .REL FILE: 3584 BYTES 7670 BYTES
--------------------------------------- --------------- ------------
╔MPROVEMENTS IN GEO╠INKER ╓2.0:
- GEO╠INKER ╓2.0 WILL ACCEPT MULTIPLE-PAGE ".LNK" COMMAND FILES,
GENERATED WITH ANY VERSION OF GEO╫RITE.
- WILL LINK UP TO 20 .REL FILES INTO A ╙┼╤ OR ├┬═ APPLICATION,
AND UP TO 20 .REL FILES PER MODULE IN A ╓╠╔╥ APPLICATION.
═AXIMUM ═AXIMUM
╙YMBOL DEFINITIONS IN GEO╠INKER ╓2.0 IN ├64 ═ODE IN ├128 ═ODE
--------------------------------------- --------------- ------------
WHEN LINKING ╙┼╤ AND ├┬═ APPLICATIONS: 2124 SYMBOLS 3217 SYMBOLS
WHEN LINKING ╓╠╔╥ APPLICATIONS:
RESIDENT MODULE: 1274 SYMBOLS 3217 SYMBOLS
FOR EACH OVERLAY MODULE: 850 SYMBOLS 1740 SYMBOLS
--------------------------------------- --------------- ------------
╔MPROVEMENTS IN GEO─EBUGGER ╓2.0:
- NEW "HIDDEN MODE": NOW YOU CAN VIEW YOUR APPLICATION'S SCREEN
WHILE GIVING COMMANDS TO GEO─EBUGGER.
- GEO─EBUGGER ╓2.0 WILL RECOGNIZE CALLS TO INLINE ╟┼╧╙ ROUTINES
SUCH AS I_╥ECTANGLE, ALLOWING YOU TO SAFELY TOP-STEP OVER
AND DISASSEMBLE THESE CALLS.
- NEW ┬ACK╥AM ╙UPER ─EBUGGER ALLOWS ├128 OWNERS WITHOUT A RAM EXPANSION
UNIT TO TAKE ADVANTAGE OF THE ╙UPER ─EBUGGER'S FEATURES.
- IMPROVED "CONTEXT SWITCH" IN ├128 MODE, ALLOWING SINGLE-STEP
THROUGH CODE WHICH INVOLVES BANK SWITCHING; ALLOWS EXECUTION AT
EITHER 1 ═╚┌ OR 2 ═╚┌ CLOCK RATE.
- FULL SUPPORT FOR NON-╟┼╧╙ APPLICATIONS, INCLUDING TECHNICAL NOTES
ON HOW TO WRITE AND INSTALL YOUR OWN INTERRUPT SERVICE ROUTINES.
- STRAY INTERRUPT TRAPPING FACILITY, TO AID IN ISOLATING RARE
CRASH CONDITIONS IN ├64 AND ├128 APPLICATIONS.
╙╘┴├╔- EXPLAIN HOW THEY GO ABOUT ORDERING THE UPGRADE:
- PRICE
- WHERE TO SEND CHECK / MONEY ORDER / CREDIT CARD # / ETC
- WHETHER OR NOT THEY CAN CALL THEIR ORDER IN
- IF THEY MUST SEND THEIR ORIGINAL DISK, OR IF A RECEIPT WILL SUFFICE.
(DO NOT ASK THEM TO TEAR THE COVER OFF THEIR MANUAL- THEY WILL
STILL NEED THE OLD MANUAL!)
- WHO THEY SHOULD CALL WITH QUESTIONS, OR WHERE TO WRITE FOR INFO
ON THE UPGRADE OFFER (NOT ME!)
├128 MODE HAS REAL TROUBLE WITH BITMAPS. ╙EE FILE14&15...
-------------------------------------------------------------------------------
╦NOWN (AND ALLOWABLE) DIFFERENCES BETWEEN GEO┴SSEMBLER (╘ED'S) AND
GEO┴SSEMBLER (MINE) OUTPUT FILES.
╘┼─: ┼╥╔├:
----------------------- -----------------------
.╥┼╠ FILE:
├ODE RECORD
ILLEGAL BRANCH: GETS GARBAGE OFFSET OFFSET = $20
┼X╥EF RECORD:
LESS ╔ GENERATE MORE ┼X╥EFS
╥ELOC ╥ECORD:
╙┘═ RECORD:
+3: ╥ELOC BIT: SET FOR ┌╨ LABELS ALWAYS 0
+4: "==" BIT SET FOR "=" EQUATES SET FOR "==" EQUATES
.┼╥╥ FILE:
MARGINS IN RULER: OFFSET=+7: =$28 =$30
-------------------------------------------------------------------------------
┬╒╟╙:
─╧╬┼:
- FIXED LINK ICON
- CLEANED UP SOME 40/80 COLUMN PROBLEMS IN ╔NIT MODULE
- MADE WRITE┬┴═╘O─ISK A BYTE VARIABLE
- ADDED ╨ANIC╫RITE╬EW┬┴═╘O─ISK TO ROUTINES WHICH DELETE CHAINS
- CLEANED UP 40/80 COLUMN MODE SWITCHING SOME MORE
- FIXED LOTS OF MISCELLANEOUS THINGS IN MACRO EXPANSION...
- REWROTE HOW MACRO PARAMETERS ARE PARSED FROM DEFINITION LINE,
SO THAT CAN DETECT ALL ERROR CASES
- REWROTE HOW MACRO ARGUMENTS ARE PARSED FROM INVOCATION LINE,
HOW THEY ARE STORED AND SEARCHED.
SHOULD HANDLE NULL ARGS, TOO MANY ARGS
- FIXED HANDLING OF GLOBAL LABELS WITHIN MACROS- NOW SUBSTITUTES
CORRECTLY, HANDLES 8 CHAR SYMBOLS
- FIXED BUG IN NESTED MACROS WHICH HAVE GLOBAL LABELS (+1 ERROR)
- FIXED HOW ╙EARCH╘ABLE DETERMINES LENGTHS OF THINGS IT CAN SEARCH FOR
- RE-WROTE TEST FILE #19 (TESTS MACRO DEF AND EXP ERRORS),
ADDED A SERIES OF ADDITIONAL TESTS, VERIFIED ALL OUTPUT,
PLACED ON TEST DISK ┴.
- CREATED TEST FILE #75 (TESTS ALL POSSIBLE NON-FATAL ERROR MESSAGES)
╔NCLUDES MOST SCENARIOS WHICH COULD GENERATE THESE ERRORS.
VERIFIED ALL OUTPUT, PLACED ON TEST DISK ┬.
- FIXED "RELOC" FLAG BUG: NOW SETS RELOCATION BITS IN LABELS CORRECTLY
- REWROTE HOW LOCAL LABELS AND REFERENCES TO THEM ARE PLACED IN TABLES
(CORRECTED BUG WHICH CLEANED UP AFTER ╩═╨ 10$ INCORRECTLY)
- REWROTE HOW INFORMATION IS COLLECTED ABOUT AN OPERAND WHILE
IT IS BEING EVALUATED, AND HOW THIS INFORMATION AFFECTS
THE POSSIBLE ADDRESSING MODES. ├ORRECTED SEVERAL BUGS
HAVING TO DO WITH EXPRESSIONS WHICH CONSIST OF SEVERAL
DIFFERENT TYPES OF ARGUMENTS.
- EXPRESSION WAS JUDGED AS RELOCATABLE EVEN AFTER MATH
- BIT FOR EQUATE WAS SET BY NOGLBL/NOEQIN STATUS
- "*" OPERAND DIDN'T SET RIGHT BIT FOR PSECT/RAMSECT
- WAS SETTING STATUS:┬3 FOR "╒NARY╘OGETHER" CASES- WHY?
- IMPROPER HANDLING OF ╠─┴ # AND .┬┘╘┼ OPERANDS
- NOT GENERATING RELOC POINTERS AND EXREFS IN ALL CASES
- NOT CATCHING ALL POSSIBLE BRANCH ERRORS (BAD LOCAL LABEL
USAGE)
- MADE 2 CENTRAL ROUTINES FOR GRABBING ARGS FOR .╔╞ ETC, .┬╠╧├╦,
.╨╙┼├╘ ETC, ETC.
- CHANGED THE WAY ╟ET┼XPRESSION LOOKS AT "MUST┼VAL"
- REMOVED THE "COMPLEX┼XP" FLAG
- REWROTE ERROR DETECTION IN LOCAL LABEL REFERENCES AND DEFINITIONS
- NOW CAN FORGET MOST RECENT LOCAL LABEL REFERENCE, FOR CASES
WHERE LINE IS BAD (DOES NOT STAMP CODE WHICH IS NOT ASSEMBLED)
- CREATED TESTFILE: FILE76_1 TO TEST ALL EXPRESSION PARSING AND
ERROR DETECTION; ALSO INCLUDES SOME BRANCHING TESTS
- FIXED A LOT OF BUGS RELATED TO USING "*" IN EXPRESSIONS
├ORRECTED EXPRESSION EVALUATOR'S TYPE-CHECKING IN GENERAL
CREATED NEW TEST FILE (FILE7) TO TEST THIS
- ╧PEN╙OURCE╞ILE IN ╞ILE/FILE╥OUTINES NO LONGER DOES A ╞IND╞ILE
BEFORE ╧PEN╥ECORD╞ILE. ╙PEED ASSEMBLY A BIT.
- SPENT A DAY CHASING FILE14 BUG IN 128 MODE. ╬O LUCK.
╦┼┼╨ ┴╬ ┼┘┼ ╧╒╘ ╞╧╥:
╘HERE MIGHT BE A BUG WITH FILE62 (TOO MANY BACKRAM SYMBOLS)
TRY ON STAND-ALONE, SEE IF ┬╧╠─╞┴├┼ CHARACTERS GET TRASHED
╔F SO, DISABLE ─═┴ ═OVE─ATA, SEE IF IT STILL HAPPENS
-------------------------------------------------------------------------------
╫ARN IN MANUAL:
╔T MAY BE POSSIBLE FOR ASSEMBLER TO HAVE TOO MANY SYMBOLS
THAN THE LINKER COULD READ IN FROM ONE .╥┼╠ FILE.
┬UT IF SOME OF THESE ARE .NOEQIN OR .NOGLBL'ED OUT, WE ARE OK.
╫ARN IN MANUAL THAT ┬╬┼ ╙TART+╙TART WILL NOT ASSEMBLE CORRECTLY,
BECAUSE ╔ ASSUME IS SOMETHING OF THE FORM: ┬╬┼ ╙TART+2, WHICH
IS LEGAL.
╞ILE SELECT ─┬ WILL DISPLAY ANY APPLICATION DATA FILE WHICH
DOES NOT END IN ".REL", ".DBG", ".SYM", ".ERR", ".LNK": THUS
IS FASTER THAN BEFORE. ╨ROBLEM: WILL DISPLAY GEO╞ILE AND GEO╨AINT ETC.
DOCUMENTS.
-------------------------------------------------------------------------------
╞╒╘╒╥┼:
┴DD TO TEST LIST
PAGE TOO BIG (4096)
ECHO TOO MANY PAGES
TOO MANY ERROR PAGES
MINOR BUGS FOUND IN FILE75:
╬OT RECOGNIZING "LINE TOO LONG" CORRECTLY
├OULD NOT GET IT TO PRINT "EXPRESSION TOO COMPLEX"
DOES NOT DETECT .RAMSECT AND .INCLUDE IN MACRO DEFINITION
SEE ERROR #61- ╔ DID NOT FORCE IT CORRECTLY
SEE FILE3: ASSEMBLER IS NOT FLAGGING ERROR FOR ".WORD "ERIC" "
├128 MODE: INTERMITTENT BUG WHEN TRYING TO ASSEMBLE FILE14 (BIG BITMAP)
OFF OF DRIVE ┴, ONTO ╥┴═ ─╔╙╦. ╙OMETIMES GET "DISK NAME MISMATCH" ERROR.
├128: WHY DID 3208 NOT OVERFLOW SYMBOL TABLE?
TABLE HOLDS 3208- ╔ SENT 3208 PLUS 3 ALREADY THERE!
├REATE A FILE78 WHICH IS A COPY OF FILE75, BUT WHICH TESTS .IF ╨ASS1 STUFF.
╔ DID THIS ON 10/1/88, AND HIT A WEIRD PHASE ERROR AT ╟LOBAL╠ABEL:. ╔ DON'T
THINK THIS IS A BIG PROBLEM.
╙LIGHT PROBLEM IN EXPRESSION EVALUATION: PARSES JMP (LABEL) AS RELOCATABLE
WITH MATH, SINCE IT HITS THE ENDING PARANTHESES. ╬EED TO EDUCATE GET┼XPRESSION
A LITTLE MORE SO THIS DOES NOT HAPPEN. ╘HIS IS NOT A PROBLEM WITH THE (,X) AND
(),Y ADDRESSING MODES, BECAUSE THEY MUST HAVE RESOLVABLE ┌╨ EXPRESSIONS,
AND SO THEY NEVER GENERATE EXTERNAL REFERENCES.
-------------------------------------------------------------------------------
─╔╙╘┴╬╘ ╞╒╘╒╥┼
═OVE LOCAL LABEL PARSING OUT OF EXPRESSION EVALUATOR:
RIGHT NOW THE ERROR DETECTION IS VERY CONFUSED BY CASES SUCH AS
LDA 10$+4
LDA 4+10$+6666666666666
LDA 10$+20$+30$ ;THREE REFERENCES ADDED TO LIST,
;ONLY LAST ONE DELETED...
═INOR PROBLEM:
┴ LINE SUCH AS
.BYTE 1,CRAP,2
WILL STILL GENERATE 3 BYTES OF CODE: WOULD BE NICE TO COMPLETELY
REVERSE THE EFFECTS (CODE, ╠├ INCS, EXREFS AND RELOCS GENERATED, ETC)
OF A CODE LINE WHEN AN ERROR IS DETECTED. ╧THERWISE THERE IS NO EASY WAY
TO HANDLE THIS CASE.
╥ELATED PROBLEM:
IN CASES WHERE AN ERROR IS DETECTED IN PASS 2 AND ╬╧╘ PASS 1,
WE HAVE TO MAKE SURE THE SAME AMOUNT OF CODE IS GENERATED IN BOTH
PASSES, SO THAT NO PHASE ERRORS SHOW UP. "╘OO MANY LOCAL LABEL
REFERENCES" IS A GOOD EXAMPLE OF THIS. ╙EE BEGINNING OF ╨ARSE╔NST
FOR HOW ╔ HANDLED THIS.
├128 MODE HAS REAL TROUBLE WITH BITMAPS. ╙EE FILE14&15...
-------------------------------------------------------------------------------
╦NOWN (AND ALLOWABLE) DIFFERENCES BETWEEN GEO┴SSEMBLER (╘ED'S) AND
GEO┴SSEMBLER (MINE) OUTPUT FILES.
╘┼─: ┼╥╔├:
----------------------- -----------------------
.╥┼╠ FILE:
├ODE RECORD
ILLEGAL BRANCH: GETS GARBAGE OFFSET OFFSET = $20
┼X╥EF RECORD:
LESS ╔ GENERATE MORE ┼X╥EFS
╥ELOC ╥ECORD:
╙┘═ RECORD:
+3: ╥ELOC BIT: SET FOR ┌╨ LABELS ALWAYS 0
+4: "==" BIT SET FOR "=" EQUATES SET FOR "==" EQUATES
.┼╥╥ FILE:
MARGINS IN RULER: OFFSET=+7: =$28 =$30
-------------------------------------------------------------------------------
┬╒╟╙:
─╧╬┼:
- FIXED LINK ICON
- CLEANED UP SOME 40/80 COLUMN PROBLEMS IN ╔NIT MODULE
- MADE WRITE┬┴═╘O─ISK A BYTE VARIABLE
- ADDED ╨ANIC╫RITE╬EW┬┴═╘O─ISK TO ROUTINES WHICH DELETE CHAINS
- CLEANED UP 40/80 COLUMN MODE SWITCHING SOME MORE
- FIXED LOTS OF MISCELLANEOUS THINGS IN MACRO EXPANSION...
- REWROTE HOW MACRO PARAMETERS ARE PARSED FROM DEFINITION LINE,
SO THAT CAN DETECT ALL ERROR CASES
- REWROTE HOW MACRO ARGUMENTS ARE PARSED FROM INVOCATION LINE,
HOW THEY ARE STORED AND SEARCHED.
SHOULD HANDLE NULL ARGS, TOO MANY ARGS
- FIXED HANDLING OF GLOBAL LABELS WITHIN MACROS- NOW SUBSTITUTES
CORRECTLY, HANDLES 8 CHAR SYMBOLS
- FIXED BUG IN NESTED MACROS WHICH HAVE GLOBAL LABELS (+1 ERROR)
- FIXED HOW ╙EARCH╘ABLE DETERMINES LENGTHS OF THINGS IT CAN SEARCH FOR
- RE-WROTE TEST FILE #19 (TESTS MACRO DEF AND EXP ERRORS),
ADDED A SERIES OF ADDITIONAL TESTS, VERIFIED ALL OUTPUT,
PLACED ON TEST DISK ┴.
- CREATED TEST FILE #75 (TESTS ALL POSSIBLE NON-FATAL ERROR MESSAGES)
╔NCLUDES MOST SCENARIOS WHICH COULD GENERATE THESE ERRORS.
VERIFIED ALL OUTPUT, PLACED ON TEST DISK ┬.
- FIXED "RELOC" FLAG BUG: NOW SETS RELOCATION BITS IN LABELS CORRECTLY
- REWROTE HOW LOCAL LABELS AND REFERENCES TO THEM ARE PLACED IN TABLES
(CORRECTED BUG WHICH CLEANED UP AFTER ╩═╨ 10$ INCORRECTLY)
- REWROTE HOW INFORMATION IS COLLECTED ABOUT AN OPERAND WHILE
IT IS BEING EVALUATED, AND HOW THIS INFORMATION AFFECTS
THE POSSIBLE ADDRESSING MODES. ├ORRECTED SEVERAL BUGS
HAVING TO DO WITH EXPRESSIONS WHICH CONSIST OF SEVERAL
DIFFERENT TYPES OF ARGUMENTS.
- EXPRESSION WAS JUDGED AS RELOCATABLE EVEN AFTER MATH
- BIT FOR EQUATE WAS SET BY NOGLBL/NOEQIN STATUS
- "*" OPERAND DIDN'T SET RIGHT BIT FOR PSECT/RAMSECT
- WAS SETTING STATUS:┬3 FOR "╒NARY╘OGETHER" CASES- WHY?
- IMPROPER HANDLING OF ╠─┴ # AND .┬┘╘┼ OPERANDS
- NOT GENERATING RELOC POINTERS AND EXREFS IN ALL CASES
- NOT CATCHING ALL POSSIBLE BRANCH ERRORS (BAD LOCAL LABEL
USAGE)
- MADE 2 CENTRAL ROUTINES FOR GRABBING ARGS FOR .╔╞ ETC, .┬╠╧├╦,
.╨╙┼├╘ ETC, ETC.
- CHANGED THE WAY ╟ET┼XPRESSION LOOKS AT "MUST┼VAL"
- REMOVED THE "COMPLEX┼XP" FLAG
- REWROTE ERROR DETECTION IN LOCAL LABEL REFERENCES AND DEFINITIONS
- NOW CAN FORGET MOST RECENT LOCAL LABEL REFERENCE, FOR CASES
WHERE LINE IS BAD (DOES NOT STAMP CODE WHICH IS NOT ASSEMBLED)
- CREATED TESTFILE: FILE76_1 TO TEST ALL EXPRESSION PARSING AND
ERROR DETECTION; ALSO INCLUDES SOME BRANCHING TESTS
- FIXED A LOT OF BUGS RELATED TO USING "*" IN EXPRESSIONS
├ORRECTED EXPRESSION EVALUATOR'S TYPE-CHECKING IN GENERAL
CREATED NEW TEST FILE (FILE7) TO TEST THIS
- ╧PEN╙OURCE╞ILE IN ╞ILE/FILE╥OUTINES NO LONGER DOES A ╞IND╞ILE
BEFORE ╧PEN╥ECORD╞ILE. ╙PEED ASSEMBLY A BIT.
- SPENT A DAY CHASING FILE14 BUG IN 128 MODE. ╬O LUCK.
╦┼┼╨ ┴╬ ┼┘┼ ╧╒╘ ╞╧╥:
╘HERE MIGHT BE A BUG WITH FILE62 (TOO MANY BACKRAM SYMBOLS)
TRY ON STAND-ALONE, SEE IF ┬╧╠─╞┴├┼ CHARACTERS GET TRASHED
╔F SO, DISABLE ─═┴ ═OVE─ATA, SEE IF IT STILL HAPPENS
-------------------------------------------------------------------------------
╫ARN IN MANUAL:
╔T MAY BE POSSIBLE FOR ASSEMBLER TO HAVE TOO MANY SYMBOLS
THAN THE LINKER COULD READ IN FROM ONE .╥┼╠ FILE.
┬UT IF SOME OF THESE ARE .NOEQIN OR .NOGLBL'ED OUT, WE ARE OK.
╫ARN IN MANUAL THAT ┬╬┼ ╙TART+╙TART WILL NOT ASSEMBLE CORRECTLY,
BECAUSE ╔ ASSUME IS SOMETHING OF THE FORM: ┬╬┼ ╙TART+2, WHICH
IS LEGAL.
╞ILE SELECT ─┬ WILL DISPLAY ANY APPLICATION DATA FILE WHICH
DOES NOT END IN ".REL", ".DBG", ".SYM", ".ERR", ".LNK": THUS
IS FASTER THAN BEFORE. ╨ROBLEM: WILL DISPLAY GEO╞ILE AND GEO╨AINT ETC.
DOCUMENTS.
-------------------------------------------------------------------------------
╞╒╘╒╥┼:
┴DD TO TEST LIST
PAGE TOO BIG (4096)
ECHO TOO MANY PAGES
TOO MANY ERROR PAGES
MINOR BUGS FOUND IN FILE75:
╬OT RECOGNIZING "LINE TOO LONG" CORRECTLY
├OULD NOT GET IT TO PRINT "EXPRESSION TOO COMPLEX"
DOES NOT DETECT .RAMSECT AND .INCLUDE IN MACRO DEFINITION
SEE ERROR #61- ╔ DID NOT FORCE IT CORRECTLY
SEE FILE3: ASSEMBLER IS NOT FLAGGING ERROR FOR ".WORD "ERIC" "
├128 MODE: INTERMITTENT BUG WHEN TRYING TO ASSEMBLE FILE14 (BIG BITMAP)
OFF OF DRIVE ┴, ONTO ╥┴═ ─╔╙╦. ╙OMETIMES GET "DISK NAME MISMATCH" ERROR.
├128: WHY DID 3208 NOT OVERFLOW SYMBOL TABLE?
TABLE HOLDS 3208- ╔ SENT 3208 PLUS 3 ALREADY THERE!
├REATE A FILE78 WHICH IS A COPY OF FILE75, BUT WHICH TESTS .IF ╨ASS1 STUFF.
╔ DID THIS ON 10/1/88, AND HIT A WEIRD PHASE ERROR AT ╟LOBAL╠ABEL:. ╔ DON'T
THINK THIS IS A BIG PROBLEM.
╙LIGHT PROBLEM IN EXPRESSION EVALUATION: PARSES JMP (LABEL) AS RELOCATABLE
WITH MATH, SINCE IT HITS THE ENDING PARANTHESES. ╬EED TO EDUCATE GET┼XPRESSION
A LITTLE MORE SO THIS DOES NOT HAPPEN. ╘HIS IS NOT A PROBLEM WITH THE (,X) AND
(),Y ADDRESSING MODES, BECAUSE THEY MUST HAVE RESOLVABLE ┌╨ EXPRESSIONS,
AND SO THEY NEVER GENERATE EXTERNAL REFERENCES.
-------------------------------------------------------------------------------
─╔╙╘┴╬╘ ╞╒╘╒╥┼
═OVE LOCAL LABEL PARSING OUT OF EXPRESSION EVALUATOR:
RIGHT NOW THE ERROR DETECTION IS VERY CONFUSED BY CASES SUCH AS
LDA 10$+4
LDA 4+10$+6666666666666
LDA 10$+20$+30$ ;THREE REFERENCES ADDED TO LIST,
;ONLY LAST ONE DELETED...
═INOR PROBLEM:
┴ LINE SUCH AS
.BYTE 1,CRAP,2
WILL STILL GENERATE 3 BYTES OF CODE: WOULD BE NICE TO COMPLETELY
REVERSE THE EFFECTS (CODE, ╠├ INCS, EXREFS AND RELOCS GENERATED, ETC)
OF A CODE LINE WHEN AN ERROR IS DETECTED. ╧THERWISE THERE IS NO EASY WAY
TO HANDLE THIS CASE.
╥ELATED PROBLEM:
IN CASES WHERE AN ERROR IS DETECTED IN PASS 2 AND ╬╧╘ PASS 1,
WE HAVE TO MAKE SURE THE SAME AMOUNT OF CODE IS GENERATED IN BOTH
PASSES, SO THAT NO PHASE ERRORS SHOW UP. "╘OO MANY LOCAL LABEL
REFERENCES" IS A GOOD EXAMPLE OF THIS. ╙EE BEGINNING OF ╨ARSE╔NST
FOR HOW ╔ HANDLED THIS.
LINKER DOES NOT WARN ABOUT WORD STAMPED INTO BYTE LOCATION:
.BYTE ┼XTERN
LDA #┼XTERN ;SEE FILE7
╟EO╠INKER ╘╚╔╬╟╙ ╘╧ ─╧:
- CORRECTED BAD ═OVE─ATA IN ╠INK╚EADER WHICH WAS TRASHING SYMBOL
TABLE, CAUSING BAD .╙┘═ FILE TO BE CREATED
(TO AVOID, DO NOT CREATE CUSTOMIZED HEADER BLOCK)
- CORRECTED BUG IN MODULE SWAPPING, WHICH CAUSED PROBLEMS WHEN
WRITING .╙┘═ FILE TO OTHER DISK
(TO AVOID, SET OUTPUT DRIVE = APPLICATION DRIVE)
- NOW RUNS GEO─EBUGGER PROPERLY (HAD BAD PERM NAME)
- TESTED .CBM LINK WITH MULTIPLE .REL FILES: WORKS OK
- REMOVED WARNINGS ABOUT ═OVE┬─ATA OVERLAPPING SYMBOL TABLE
- FIXED: "SYMBOL DEFINED MORE THAN ONCE"- IS PRINTING FILENAME
INSTEAD OF SYM
- FIXED: IF SYM ERROR IN HEADER FILE, ERROR MESSAGE FUNNY
- FIXED: IF SYM TABLE EMPTY, SEARCHES ALL OF MEMORY FOR SYMBOL
- FIXED: PRINTS CORRECT ERROR WHEN HEADER BLOCK WRONG SIZE
- FIXED: DOES NOT DELETE OLD FILES WHEN OUTPUT DRIVE NOT INPUT DRIVE
- FIXED: SEQ, CBM, AND VLIR .╧┬╩ FILES SHOULD NOW HAVE CORRECT SIZE.
- RE-INSTALLED RESIDENT CODE MUNGING
- CLEANED UP SOME 40/80 COLUMN PROBLEMS IN ╔NIT MODULE
┴╞╘┼╥ ┬┼╘┴ 1:
ADD FILES TO TEST LIST
╞UTURE:
╔ AM NOT SO SURE THE ╚EX/DECIMAL/OCTAL ETC PARSERS WORK.
SAME PROBLEMS IN ASSEMBLER?
╔ MAY HAVE SCREWED UP HOW IT EVALUATES EXPRESSIONS IN .═╧─ STATEMENTS
╙EE ╥ESIDENT/GET╠INE, AND A VARIABLE "OPERAND" WHICH DETERMINES
WHERE A WORD BOUNDARY IS.
─╧╬┼:
- REORDERED MODULES
- MADE SURE THAT PROGRAM HAS A TOP-LEVEL IN RESIDENT,
AND THAT EVERYTHING IS A CALL FROM IT
- UPDATED HOW SWAP AND DRIVE ROUTINES WORK
- COMBINED ╞ILE, ─RIVE, AND ├OMPACT MODULES
- UPDATED ╟ET╞ILENAME, WITH CHANGES WE MADE TO GEO┴SSEMBLER
- COPIED NEW ╘O╘EXT AND ╘O┬ITMAP ROUTINES OVER FROM ASSEMBLER
- MOVED SOME INIT CODE TO ╞ILE MODULE
- MOVED ERROR FILE CREATION TO ╞ILE MODULE
- REMOVED ALOT OF UNUSED CODE IN EXPRESSION EVALUATOR,
REMOVED BUGS
- CREATED ╟ET╠INE┴ND╫ORD
- ╧PEN┴NOTHER╞ILE -> ╧PEN╥EL╞ILE
- REWROTE HOW ╠╬╦ FILE IS PARSED
MOVED MOST OF IT TO ╞ILE
REWROTE MID-LEVEL AND TOP-LEVEL PARSING ROUTINES
DELETED SOME ERROR MESSAGES,
ADDED SOME
- UPDATED SCREEN HANDLING
- REWROTE HOW SYMBOLS ARE RELOCATED
- REWROTE HOW RELOC POINTERS ARE READ IN AND USED
- REWROTE HOW EXPRESSIONS ARE READ IN AND USED
- REWROTE ROUTINE TO SEARCH SYMBOL TABLES- REMOVED LOT OF EXCESS CODE,
POSSIBLY SOME BUGS. SEARCHES 2-3 TIMES FASTER NOW.
- SIMPLIFIED HOW SYMBOLS ARE COMPACTED, FIXED, SORTED, AND WRITTEN
OUT TO DISK
- PLACED ╥ES AND ╙WAP TABLES NEXT TO EACH OTHER, COMMENTED OUT ALL
BIG╙EQ CODE
- ╥┼╫╥╧╘┼ HOW .╧┬╩ FILE IS CREATED AND WRITTEN TO, INCLUDING
CUSTOM HEADER BLOCK / ├┬═ FILE CONSIDERATIONS
- REWROTE HOW HEADER BLOCK .╥┼╠ FILE IS LINKED TO REST OF APPLICATION-
HEADER .╥┼╠ FILE CAN NOW HAVE ITS OWN SYMBOL DEFS, WHICH GO TO SWAP
TABLE.
- ╥┼╫╥╧╘┼ HOW LINKER OPENS GEO╫RITE OR GEO─EBUGGER (CODE FROM ASSEM)
- BROUGHT NEW ╘O╘EXT AND ╘O┬ITMAP CODE OVER FROM GEO┴SSEM
- REWROTE ERROR PRINTING ROUTINES
- ╥┼─╒├┼─ ╘╧╘┴╠ ╙╔┌┼ ╧╞ ┴╨╨ ╞╥╧═ 24╦ TO 20╦
- ╥┼─╒├┼─ ╙╔┌┼ ╧╞ ╥┼╙╔─┼╬╘ ┬┘ 2589 ┬┘╘┼╙!
- DID COMPLETE WALK-THROUGH OF NEW CODE, MAKING SURE THAT DISK
AND USER ERRORS CAUSED THE RIGHT THING TO HAPPEN
- FINAL WORK ON FILE CREATION/DELETION STUFF
- RE-INSTALLED ╙╘╧╨ KEY CHECKS
- ADDED ├HECK─ISK┼RROR CALLS THROUGHOUT PROGRAM
- ADDED CODE TO SET FILENAME POINTER IN CASE ERROR OCCURS
- ADDED NEW ERROR DIALOG BOX: PRINTS FILENAME, ERROR, ALLOWS ├┴╬├┼╠
- ADDED CODE TO DELETE OUTPUT FILES CORRECTLY ON ERROR,
DISPLAY SECOND ─┬ IF SECOND DISK ERROR
- NUKED ERROR MESSAGE POINTER TABLE TO SAVE BYTES IN RESIDENT
- ╥┼╫╥╧╘┼ HOW WE CREATE THE .┼╥╥ FILE
MADE SURE RULER AND VERSION # ARE ╧╦
- ╥┼╫╥╧╘┼ HOW WE CREATE THE .─┬╟ FILE
- MODIFIED HOW WE CREATE THE .╙┘═ FILE- DOES THIS NEED ANY WORK?
DON'T FORGET TO TEST INSTALLATION WITH 1571 DRIVE!
╘HINK ABOUT 2 DIFFERENT PHYSICAL DRIVES ON NON-╥┼╒ SYSTEM: WILL ╟┼╧╙
TELL ME THAT DRIVER DOES NOT EXIST, OR WILL ╔ CRASH?
┬UG: 1571 AS ┴, 1581 AS ┬, RUN DEBUGGER ON ┬, TRY TO SELECT DRIVE ┴,
AND SINCE THERE IS NO ╥┼╒, ╟┼╧╙ ╙ET─EVICE DOES NOT WORK. ─OES IT RETURN
ERROR CONDITION TO DEBUGGER? OR JUST CRASH...
┬UGS IN ╘UESDAY (6/21) 12╨═ VERSION:
STOP COMMAND IN HIDDEN MODE DOES NOT DO THE RIGHT THING!
CHANGE NOTES IN GET INFO BOX
┬UGS IN THU (6/16) 4╨═ VERSION:
FIXED: ╙┼╘╒ U.E2 COMMAND DOES NOT CLEAR HIGH BITS!
FIXED: ╙┘═ R0╠ FINDS R0 ALSO!
FIXED: GETN COMMAND IS READING DISK INFO FROM BANK 0!
FIXED: IN RBOOT, QUIT, AND EXIT COMMANDS, PRESSING ╞8 SCREWS UP LINE
FIXED: STOP COMMAND DOES NOT CANCEL HIDDEN MODE ANYMORE
FORGET: @# OPERATOR DOES NOT TAKE IN-LINES INTO ACCOUNT
INVESTIGATED: WE CANNOT PROTECT ALL OF ╔/╧ SPACE
WARN IN MANUAL: IN ┬ACK╥AM╙UPER (AND HAVE ╥┼╒), SHOW ╟┼╧╙ SCREEN WHEN
TOP-STEPPING THROUGH ═OVE─ATA, BECAUSE IT USES ─═┴ TO MOVE
SMALL THINGS. (╘HEY COULD DISABLE ═OVE─ATA IN CONFIGURE TO BE
SURE. ┴LSO WARN THAT AN ╥┬╧╧╘ BRINGS BACK OLD ═OVE─ATA/╥┬╧╧╘
FLAG VALUES.)
┬UGS IN EARLIER VERSIONS:
FIXED: SETU SS,0 PLACES CURSOR WRONG
FIXED: PRINT @ SIGN WHERE ╨├ SHOULD GO
FIXED: NOT DELETING ╙┬╨'S CORRECTLY
FIXED: TRASHES ╪ (AND OPEN MODES) WHEN SETTING ╙┬╨S TO ╥┴═
FIXED: DOES NOT LOAD ├┬═S WITH HEADER CORRECTLY
FIXED: $03╞├-$03╞╞ STILL TREATED DIFFERENTLY
FIXED: IN 64 MODE, IS NOT TRACKING BANK INFO WITH ╙┬╨S CORRECTLY
FINISH NOW WORKS WITHIN INLINE CALL
CLEANED UP ╞ETCH╔NST USAGE
N COMMAND WILL NOW SET FINAL ╠├ CORRECTLY IF LAST LINE IS INLINE ╩╙╥
FIXED ╞IND╬EXT: ═ MODE SHOULD NOW IGNORE INLINE STUFF
CHECK UP AND DOWN IN BOTH MODES, CHECK REG, FLAG, OPT, ETC
CORRECTED "╫": NOW USES ╞IND╬EXT, SO SHOULD WORK.
FIXED ╩╙╥ COMMAND
TEST: BOOT APP AND TRY ╩╙╥ $400: SHOULD COME BACK TO
US BEFORE GOING OFF TO ╟┼╧╙ MAINLOOP
FIXED SKIP COMMAND: TAKES BANK INTO ACCOUNT
FIXED DIFF AND COPY COMMANDS
FIXED ╞8 IN MINI DEBUGGER RIGHT-SIDE PROMPT BUG
FIXED LOAD ├┬═ APP WITH HEADER BUG
FIXED $3╞├-$3╞╞ BUG
FIXED BANK INFO COMPARISONS
ADDED ╔ AND ╥ PRINTING TO OPEN COMMAND
PRINTS ERROR IF TRY TO SET ┬╨ IN ╥╧═ OR ╔╧
FIXED ╔╧ AREA DECODE BUG ($─022)
CLEANED UP INIT CODE: ZEROED ALL VARS AT START, SAVED LOTS OF BYTES
FIXED ╙TUFF┬╥╦┴T╠╙┴ BUG WHICH ╔ CREATED YESTERDAY!
------------------------------------------------------------------------------
═AJOR CODE SECTIONS:
------------------------------------------------------------------------------
╞OR ╘EST ╠IST:
GOOD TEST FOR ├64 VERSION: CHECK TO SEE IF $╞╞00 AND $─506 ARE CHANGING
SPECIAL ASSIGNMENTS FOR ┬ETA ╘ESTERS?
SINGLE STEPPING THROUGH DIFFERENT BANKS
MEMORY ACCESS TESTS
SYMBOL TABLE USE
MACRO DEFINITION USE
------------------------------------------------------------------------------
╬EW ├ONCERNS:
WHAT IF IN 64 MODE THEY SWAP ╥╧═ IN AND USE DEBUGGER ╟ET┬LOCK?
------------------------------------------------------------------------------
╘HINGS ╘O ╥ESEARCH:
╥┼╙┼╘ EXECUTES ╥╧═╙, BUT DO THEY CHECK ╥┴═?
┬ANK 0 ╨AGE 3 ISSUES:
╔ FILL FIRST WITH $00 AND THEN WITH $ED, AND DESK╘OP AND ICON EDITOR
HAD NO PROBLEMS RUNNING.
CANNOT LOAD OTHER DESK ACCESSORIES?
EASY WAY TO LOAD DRIVERS?
???CONVERT TABS FOUND IN MACRO DEFS
???─╔╥ SAVE ╨├?
╔NIT╞OR╔╧ TRASHES $314 AREA VECTORS- ┘┼╙: $314 AND $318 (╔╥╤ AND ╬═╔)
------------------------------------------------------------------------------
╬OT CONCERNED WITH:
DEBUGGER ASSUMES ALL GEO╫RITE VERSIONS ABOVE 1.1 ARE THE SAME.
64 MODE ON ├128: CAN SET FOR 2═╚┌?
╥┼╙╘╧╥┼ KEY BOUNCES! ╟ENERATES TWO ╬═╔ SIGNALS, SPACED ABOUT 200 USEC APART
------------------------------------------------------------------------------
╠OW ╨RIORITY:
╒SER COMPLAINT: HIS PROGRAM RAN UNDER ─╟┬, CRASHED UNDER ╟┼╧╙. ╚E HAD FORGOTTEN
TO PUT A DUMMY ICON UP. ╨OSSIBLY RELATED TO DEBUGGER CLEARING MEMORY.
╙HOULD NOT ALLOW USER TO LOAD APPLICATION WHICH TRASHES ═INI─EBUGGER IN MEMORY
OR WHICH WOULD TRASH ╟┼╧╙
ADD OPTION TO DISABLE ╟┼╧╙ ─ISK USAGE? (SO THEY WON'T DO THE WRONG THING
WHEN DEBUGGING GAMES)
ADD DETECTION FOR TRASHED ╟┼╧╙? (WOULD FORCE RBOOT ON EXIT)
READ OPTION PRESETS FROM VALUE OF ╧╨╘╔╧╬╙ CONSTANT IN SYMBOL TABLE
AFTER USER HAS TRASHED MEMORY, SHOULD BOOT ╟┼╧╙ FROM DISK...
OPTION TO ALLOW THEM TO USE ┬╥╦ AS AN INSTRUCTION (GET TO THEIR VECTOR)
------------------------------------------------------------------------------
╞OR ═ANUAL:
MINOR: HOLDING MOUSE BUTTON LOOKS LIKE RUN/STOP DURING BOOT
THEIR ╔╥╤ SERVICE ROUTINE MUST FINISH WITH AN ╥╘╔
BECAUSE OF THE WAY THINGS ARE PUSHED...
─EBUGGER WILL NOT LOAD THEIR ╟AME OVER ╟┼╧╙: ╟AME MUST CALL ╟┼╧╙
ROUTINES TO GET THE REST OF IT IN (THIS IS WHAT DESK╘OP
WOULD REQUIRE ANYWAY.)
PLACES ┬╥╦ AT ╥STR┴PPL IF IS RUNNING DESK ACCESSORY
MENTION "╨RESS ╥┼╙╘╧╥┼ SHARPLY" IN MANUAL
$─506 AND $╞╞00 SHADOWED
R.MM NUKED COMPLETELY. ╥ COMMAND NO LONGER SHOWS ═EM═AP
SCREEN FLICKER DURING STEP IS DUE TO POOR ╟┼╧╙ 128 INTERRUPT CODE
HOLDING KEY DOWN WHEN DEBUGGER STARTS WILL FORCE ERROR ON FIRST LINE
USER MAY WANT TO CHANGE R COMMAND: CREAT MACRO WHICH DOES ╥ AND ┬┴╬╦.
USER CAN CHANGE ╨├ MEM MAP DIRECTLY BY ACCESSING FF00 AND D506
IF USER'S CODE UPDATES SCREEN REGISTERS, BUT DEBUGGER SCREEN IS
VISIBLE, THEN WHEN DEBUGGER KICKS IN IT WILL ASSERT ITS
VALUES, LOSING THE USER'S NEW VALUES. ╫ARN THEM TO ENABLE
TARGET SCREEN BEFORE EXECUTING SUCH CODE.
SEE ╙PECS/USER╬OTES FOR MORE...
------------------------------------------------------------------------------
┴SSUMPTIONS:
╟┼╧╙ 128 HAS SAME $FFFA VECTORS IN ┬1 AND ┬0. ╔ ASSUME THIS TO BE TRUE
FOR ALL FUTURE VERSIONS.
------------------------------------------------------------------------------
╙AVE ┬YTES:
MINI DEBUGGER DOES NOT HAVE TO BE AS CAREFUL ABOUT SCREEN STUFF
IN RESIDENT:
COMPACT THAT DAM ─RIVE ICON!
------------------------------------------------------------------------------
╞UTURE:
DO NOT EXECUTE ILLEGAL INSTRUCTIONS
COULD CUSTOMIZE DEBUGGER ACCORDING TO 64/128 MODE
╥┼╒ AS TRACE BUFFER?
DON'T ALLOW TWO MACROS OF SAME NAME IN MACRO FILE
WRITE OUT MACRO FILE
ADD MODULES TO DEBUGGER FOR MORE FEATURES
SENSE USER'S MODULE SWAP AND CORRECT ╙┬╨S?
COULD SAVE ┬1/┬0 INFO IN SYMBOL TABLE TO FURTHER REDUCE CONFLICTS
MEMORY RANGE COMMANDS COULD EASILY MOVE DATA FROM BANK TO BANK
COMMANDS LIKE ╫ WILL NOT WORK IF PRINTING IS OFF, BECAUSE
─ISPLAY╠OCATION IS NEVER CALLED, BYTES NEVER READ, POINTERS
NEVER MOVED. ╘HIS COULD BE CLEANED UP.
CLRB IS NOW CRIPPLED BECAUSE IT RELIGIOUSLY CHECKS FOR EXACT BANK
INFO WHEN SEARCHING THE ╙┬╨ LIST. ├OULD REMOVE THIS
RESTRICTION TO MAKE THE CLRB COMMAND EASIER, BUT THEN
TRYING TO REMOVE A DOUBLE-╙┬╨ (BANK1 AND 0, SAME ADDR)
USING AN OPEN MODE WOULD BE IMPOSSIBLE.
┴CTUALLY, THERE IS A DEEPER PROBLEM WITH THE WAY WE STORE BANK INFO
WITH ╙┬╨S IN THEIR TABLE: WE SHOULD JUST STORE THE EFFECTIVE
BANK DIFFERENCE, NOT THE 16 BITS OF INFO. ╔F THE SETB COMMAND
IS CHECKING FOR EXACT MATCHES WHEN IT INSERTS A NEW ╙┬╨,
THEN YOU COULD HAVE SEVERAL "EQUAL" ╙┬╨S IN THE SAME TABLE.
------------------------------------------------------------------------------
╞INISHED:
40/80 COLUMN TEXT BITS AND CENTERING STUFF, MOVED TO ONE FILE,
STANDARDIZED ─┬ TEXT POSITIONS (WILL HELP APPLE PORT)
MACRO LOAD BUGS, EXTENSIVE ERROR CHECKING, PAGE/LINE # BUGS
SYMBOL LOAD BUG
INFO BOX CODE: DISPLAYS STATUS MESSAGES AS FILES LOAD
╙╘╧╨ KEY BUG
BUGS IN LOAD╙AVE┬YTE
ERROR CHECKING DURING SYMBOL TABLE LOADS
LOADS DEFAULT.DBM EVEN IF NO FILENAME GIVEN
NEED ╥ES╨REP╞OR╤UIT
EXTENSIVE ERROR CHECKING DURING MODULE SWAPS, DEBUGGER LOADS,
AND FILENAME SELECTION (INCLUDING PRINTING CURRENT FILENAME
DURING ERROR)
ADDED MEMORY ╥/╫ CHECKS FOR $╞╞01-$╞╞04
PAGE # IN MACRO FILE LOADS
FIXED 80 COLUMN SCROLL BUG
╥ES╨REP╞OR╤UIT RESTORES USER'S SCREEN, NOT BE SAME AS ╟┼╧╙ SCREEN
CLEAR PENDING INTERRUPT BEFORE STEPPING
TEST NEW ╠├╥┴-╠├╥─ STUFF
INVERTS ADDRESSES IF DISPLAYING BANK #0 ADDRESS
╟ET┬LOCK, ╨UT┬LOCK: CALL BANK 1 ROUTINE, DISPLAY BANK 1 DATA
╩╙╥ DOES WORK IN EITHER BANK (BECAUSE IS LIKE A TOP-STEP)
╥┼╒ CHECK UNDER ╟┼╧╙ ╓1.2
TEST RBOOT IN ALL 5 CONFIGS
├64 MODE!
BANK╔NFO1/2 VARIABLE: CARRIES INFO IN 64 AND 128 MODES
CALL ╟ET1ST─IR┼NTRY, USE R5, CALL GET╬XT─IR┼NTRY
- NEED TWO NEW PRIMITIVES
- CHANGE DIR MACRO
TRACKED DOWN SCREEN FLICKER BUG (IS ╟┼╧╙ 128 INTERRUPT CODE!)
- IMPLEMENTED NEW 3-LEVEL ╬═╔ ENABLE/DISABLE CODE
- FOUND BUG IN 128 ╟┼╧╙ ╔NIT╞OR╔╧
- ADDED ├╔┴2 ╬═╔ HANDLING
- WROTE DOCUMENTATION ON STRAY INTERRUPT TRAPPING
- WROTE ROUTINES SO USER'S APPLICATIONS CAN SET INTERRUPT SERVICE
ROUTINE VECTORS CORRECTLY WHEN RUNNING UNDER ╟EO─EBUGGER
- DOCUMENTED VECTORS IN ╟EO─EBUGGER WEDGE CODE WHICH ARE USEFUL
- FIXED "LDA ┴000" PARSE BUG
- FIXED SYM SEARCH BUG
- FIXED BUG IN STOPMAIN
- FIXED DISASSEMBLY BUG: NOW DISPLAYS CODE WHEN CANNOT FIND LABEL
MACRO ERROR BUG
STOP KEY BUG
CIA1 DDR ASSERTION
RTI BUG
CENTERING
╠D╞ILE USAGE BUG
FILE INIT ADDRESS BUG
EXIT AFTER DISK ERROR CORRECTED
SELECT FILE ─┬ ICONS, SCROLLING BUG
FILE ─┬ SELECTION AREA
SETU / PR U.E1 BUG
DIR / GETBLOCK FROM ╥┴═ ─╔╙╦ BUG
FLAGS ON BOOT BUG
╥┬╧╧╘ MORE INTELLIGENT
IGNORES ╙╘╧╨ KEY IN LEFT-SIDE MODE
REWROTE SOME PRINTING ROUTINES
ADDED NEW ╚╔─┼ FEATURE
CORRECTED 128 MODE KEYBOARD SCAN PROBLEM
ADDED KERNAL CHECKING TO ╟ET1ST─IR┼NTRY/╟ET╬XT─IR┼NTRY
AND MADE SOME CORRECTIONS
DISPLAY COPYRIGHT MESSAGES
DISPLAY DISK NAME WHEN SELECTING FILE
TOP-STEP THROUGH INLINE CALLS
DISASM UP AND DOWN THROUGH INLINE CALLS
PAGE 3 CODE ASSERTS VALUE OF $0000 TO $2╞
DUMPD COMMAND SETS ╠├ TO ┬1$8100
CORRECTED ╟ET┬LOCK/╨UT┬LOCK
CORRECTED DISK AND DRIVEA/B COMMANDS
CORRECTED ╨RINT─ISK╬AME COMMAND
REWROTE WAY THAT THE 3 MONITORS READ/WRITE/SWAP MISC. ╟┼╧╙ VECTORS
AND VARIABLES
JUST FIXED 64 MODE BUG, MADE TABLE SHORTER USING ▌ OPERATOR
BACKRAM SUPER SHOULD DISABLE ─┴ LOADS
------------------------------------------------------------------------------
╞╔╠┼╙ ╔╬ ╘╚╔╙ ─╔╥┼├╘╧╥┘
/STAFF/JIM/GEOS/╨╥╧─╒├╘╙/GEO╨ROG/GEO─EBUG/╙PECS
╒SEFUL:
╔NIT╞OR╔╧┬UG: DETAILED INFO ON ├128 ╔NIT╞OR╔╧ BUG
╥┼╒╬OTES: FULL DOC ON ╟┼╧╙ ╥┼╒ USAGE AND HOW WE USE IT
╥┼╒BUGS: HOW TO WARN USER THAT ─═┴ USES ╓╔├ BANK INFO
APP╘YPES: INFO ON HOW DESK╘OP AND DEBUGGER LOAD APPLICATIONS
MEM╨ROTECT: DETAILED SPEC OF HOW DEBUGGER'S LOAD╙AVE┬YTE ROUTINE WORKS
CBM┴PPS: INFO ON HOW TO USE PRODUCT TO DEVELOP ├┬═ APPLICATIONS
HIDE═ODE: ALL ABOUT THE NEW HIDE DEBUGGER SCREEN FEATURE
INTERRUPTS: NOTES TO USER ABOUT INTERRUPTS
NMI: NOTES ON ╬═╔ INTERRUPTS, ╥┼╙╘╧╥┼ BOUNCE, ETC
RBOOT╫ARN: WARNING ABOUT RBOOT COMMAND, KNOWN PROBLEMS
VIEW├OMMAND: HOW NEW VIEW COMMANDS WORK
ENVIRONMENT: VIEW COMMANDS- DECISIONS MADE
WISH╠IST: IDEAS...
╬OT USEFUL:
128IDEAS: GENERAL IDEAS ON
INSTALLING USER'S ╔╙╥
TRAPPING STRAY INTERRUPTS
40/80 COLUMN SCREEN USAGE
ON 128 MEMORY MAP REGISTERS, CLOCK SPEED, KEYBOARD
╔NIT╔NT╙VC2.OLD: OLD ╔╙╥ INSTALL INFO
═╔╬╔: THINGS NUKED IN ═╔╬╔ DEBUGGER TO SAVE SPACE
╙╨┼├╙: OUTLINE FOR PRODUCT SPECIFICATION
ASSEM╔N┬ASIC: HOW TO USE GEO╠INKER TO CREATE ┬┴╙╔├ APPS
BOOT: OLD OUTLINE OF DEBUGGER BOOT SEQUENCE
DESIGN─ECISIONS: DECISIONS MADE ALONG THE WAY
PROBLEMS: UNRESOLVED PROBLEMS IN THE DESIGN
CONTEXT╙WITCH: INFO ON HOW ├64 / ├128 INTERRUPTS WORK, AND HOW DEBUGGER'S
CONTEXT SWITCH WORKS WITH THEM
WARNINGS: PROBLEMS IN THE DESIGN FOR WHICH NO SOLUTION EXISTS
SCREEN─ECISIONS: DECISIONS MADE IN DESIGN OF ╓2 SCREEN ROUTINES
├128 ╔NIT╞OR╔╧ BUG?
╧N BOTH THE 64 AND 128, THE ├╔┴2 CHIP HAS THE CAPABILITY OF GENERATING
AN ╬═╔ SIGNAL. ╘O PREVENT THIS FROM OCCURING DURING DISK-ACCESS ROUTINES,
THE ╟┼╧╙ ╔NIT╞OR╔╧ ROUTINE FORCES THE ├╔┴2 TO GENERATE ONE INTERRUPT BY SETTING
THE ├╔┴ TIMER VALUE TO A LOW NUMBER LIKE 1. ╔NIT╞OR╔╧ KNOWS THAT IT WILL GET
CONTROL WHEN THIS FORCED-╬═╔ OCCURS BECAUSE IT SWAPS THE KERNAL ╥╧═ INTO THE
HIGH-MEMORY AREA AND SETS THE KERNAL'S PAGE 3 ╬═╔ VECTOR (NMIVEC, $0318)
TO POINT TO A DUMMY ╬═╔ ROUTINE.
- ON THE ├64, THIS WORKS FINE, EXCEPT FOR THE FACT THAT ╔NIT╞OR╔╧
IS TRASHING ANY ╬═╔ VECTOR THAT THE APPLICATION WRITES TO $0318.
- ON THE ├128, ╔NIT╞OR╔╧ DOES NOT SWAP ╥╧═ IN CORRECTLY (IT IS CHANGING
LOCATION $0001). ╙O WHEN IT FORCES THIS ╬═╔ TO OCCUR, THE 6510 USES
THE VECTOR AT ┬1$╞╞╞┴ OR ┬0$╞╞╞┴, WHICH NORMALLY POINT TO THE ╟┼╧╙
╬═╔ HANDLER ROUTINE, WHICH SIMPLY DOES AN ╥╘╔. ╔F AN APPLICATION CHANGES
THE ╟┼╧╙ ╬═╔ VECTORS AT ┬0$╞╞╞┴ AND ┬1$╞╞╞┴, THEN THE USER'S HANDLER
ROUTINE WILL GET CALLED EVERY TIME ╔NIT╞OR╔╧ IS CALLED. ╘HE USER'S
HANDLER ROUTINE SHOULD POLL THE ├╔┴ CHIP AND RETURN IMMEDIATELY IF
THE ╬═╔ WAS GENERATED BY THE ├╔┴. ╔F THE USER IS EXPECTING ╬═╔S FROM
THE ├╔┴ CHIP, THEN THIS "POLLING" PROCESS MUST ALSO INCLUDE AN
EXAMINATION OF THE STACK TO SEE IF ╔NIT╞OR╔╧ IS IN PROGRESS...
├ONCLUSION:
─UE TO THE FACT THAT ╔NIT╞OR╔╧ MAKES SOME ASSUMPTIONS ON THE ├128,
USERS WHO WRITE THEIR OWN ╬═╔ HANDLER ROUTINE WILL HAVE TROUBLE.
╨OSSIBLE FIXES:
├64 AND ├128 ╔NIT╞OR╔╧ SHOULD BOTH BRING ╥╧═ IN, AND SHOULD BOTH SAVE THE
╬═╔ VECTOR AT $0318 (BANK 0 ON THE 128), AND RESTORE IT LATER. ╘HIS WOULD
MAKE ╔NIT╞OR╔╧ WORK ALL THE TIME (REGARDLESS OF WHAT THE USER HAS DONE TO
THE VECTORS) AND IT WOULD NOT AFFECT THE APPLICATION'S VECTORS.
1764/1700/1750 ╥AM ┼XPANSION ╒NITS
----------------------------------
1764: 128╦ 2 64╦ BANKS, INTENDED FOR ├64
CAN BE EXPANDED TO 512╦
1ST 64╦ BANK: ╟┼╧╙ SYSTEM STUFF. 2ND BANK UNUSED.
1700: 256╦ 4 64╦ BANKS, INTENDED FOR ├128
CAN BE EXPANDED TO 512╦
1ST 64╦ BANK: ╟┼╧╙ SYSTEM STUFF.
2ND - 4TH BANKS: 1541 ╥┴═ ─╔╙╦ OR 1541 DISK SHADOW.
1750: 512╦ 8 64╦ BANKS, INTENDED FOR ├128
CAN BE MADE TO WORK ON ├64
1ST 64╦ BANK: ╟┼╧╙ SYSTEM STUFF. 2ND BANK UNUSED.
2ND - 8TH BANKS: 1541/1571 ╥┴═ ─╔╙╦ OR 1541/1571 DISK SHADOW.
╥┼╒ ┬ANK #0: (1ST BANK)
┬ANK #0 IS RESERVED FOR ╟┼╧╙ KERNAL USE. ╟┼╧╙ WILL, HOWEVER, HONOR SOME
ENABLE BITS IN SYS╥┴═╞LG AND ITS' SHADOW VARIABLE SYS╞LG├OPY. ┬Y CLEARING
SOME OF THESE BITS, YOU CAN PREVENT ╟┼╧╙ FROM USING CERTAIN AREAS, AND THEN
YOUR APPLICATION CAN USE ╙TASH╥┴═, ╞ETCH╥┴═, ETC TO STUFF DATA UP THERE.
├128
64 ╟┼╧╙ 128 ╟┼╧╙ ├ONTROL BIT
----------------------- ----------------------- -------------
$0000 - $38╞╞ ═OVE─ATA SWAP AREA ═OVE─ATA SWAP AREA 1╪╪╪╪╪╪╪
$3900 - $78╞╞ ═OVE─ATA SWAP AREA ╟┼╧╙ KERNAL FOR ╥┬OOT NOTE 1
$7900 - $7─╞╞ ╘O┬ASIC CODE ╘O┬ASIC CODE ╪╪1╪╪╪╪╪
$7┼00 - $82╞╞ ╟┼╧╙ KERNAL FOR ╥┬OOT ╟┼╧╙ KERNAL FOR ╥┬OOT ╪╪1╪╪╪╪╪
$8300 - $┬8╞╞ ─EVICE DRIVERS ┴, ┬, ├ ─EVICE DRIVERS ┴,┬,├ ╪1╪╪╪╪╪╪
$┬900 - $╞├3╞ ╟┼╧╙ KERNAL FOR ╥┬OOT ╟┼╧╙ KERNAL FOR ╥┬OOT ╪╪1╪╪╪╪╪
$╞├40 - $╞╞╞╞ ??? ??? ???
╬OTE 1: DIFFERENT FOR 64/128.
╥┼╒ ┬ANKS 1 THROUGH 7:
╒SED BY DEVICE DRIVERS FOR ╥┴═ ─╔╙╦ AND SHADOWING.
╔T IS A REAL BAD IDEA TO TOUCH THESE BANKS.
------------------------
╥┼╒ ─═┴ ╬╧╘┼╙:
DISABLE SHARING WHEN USING ╥┼╒ ─═┴
RELOCATION HIGH BYTE: ONLY ┬0 R/W CAPABLE, MUST WRITE TO LOW BYTE BEFORE
CAN READ INFO BACK FROM HIGH BYTE (INDICATING RELOCATION IS ACTIVE)
═IGHT BE ABLE TO USE THIS TO DECIDE WHETHER OR NOT ╬═╔ OCCURRED WHILE
SOMEONE WAS STUFFING VALUES IN THESE REGISTERS.
------------------------
═ATT: ╔ GUESS IT IS REALLY ONLY 1 BUG, AND IT IS NOT A BUG IF THE USER
IS USING THE STANDARD ╟┼╧╙ SCREEN FOR DISPLAY, AND IS NOT TRYING TO
─═┴ DATA TO BACKRAM (BANK 0).
╘HERE ARE A NUMBER OF CONCERNS WHEN USING THE ╥┼╒'S ─═┴ CHIP ON A ├128:
1) THE CLOCK MUST BE SLOW (1═╚┌, NOT 2═╚┌)
128 ╟┼╧╙ HANDLES THIS CORRECTLY.
2) THE ╔╧ SPACE MUST BE IN, SO YOU CAN ACCESS THE ─═┴ CHIP
(BIT 0 OF $FF00 "CONFIG" MUST BE A 0)
UNDER 128 ╟┼╧╙, THE ╔╧ SPACE IS ALWAYS IN.
3) WHEN THE ─═┴ CHIP FORMS AN ADDRESS FOR WHERE IN THE ├128'S 128╦ TO
READ AND WRITE, IT IGNORES THE STANDARD BANK 0 / BANK 1 SELECTION
CONTROLS AND THE "BANK SHARING" CONTROLS. ╘HESE CONTROLS ╔ AM TALKING
ABOUT ARE BITS 7 AND 6 OF $╞╞00 (CONFIG) AND BITS 5 THROUGH 0 OF
$─506 (╥├╥) IN THE ╔╧ SPACE.
╘HE ─═┴ CHIP KNOWS WHICH OF THE TWO 64╦ BANKS TO USE BECAUSE IT USES
THE SAME BANK 0 / BANK 1 CONTROL LINE THAT THE ╓╔├ CHIP USES. ╘HIS CAN
BE USEFUL: NO MATTER WHAT BANK SETUP YOU HAVE FOR THE 8510 PROCESSOR
CHIP, YOU CAN HAVE THE ─═┴ CHIP READ/WRITE TO ANYWHERE IN EITHER
BANK. ╬OW DEPENDING ON WHICH BANK THE ╓╔├ CHIP IS LOOKING AT AND WHICH
BANK YOU WANT TO ╥/╫ TO, YOU MAY HAVE TO CHANGE THE ╓╔├ CHIP BANK
# SETTING TEMPORARILY (WILL CAUSE SCREEN TO FLASH).
├ODE TO DO THIS: (ASSUMES R0-R3╠ HAVE ALREADY BEEN SET UP FOR ╙TASH╥┴═)
;FIRST, ╔ ASSUME ╔╧ SPACE IS IN, BECAUSE UNDER
;128 ╟┼╧╙, $╞╞00 = $7┼, MEANING ╔╧ IS IN.
LDA MMU+6 ;GET "╥AM├ONTROL╥EGISTER"
PHA ;SAVE CURRENT BANK SHARING
;STATUS AND ╓╔├ BANK # INFO
;ON STACK
AND #%00111111 ;KEEP ┬5-┬0 INTACT
ORA #┬┴╬╦ << 6 ;SET ┬IT 6 ACCORDING TO BANK WE
;WANT ╓╔├ AND ─═┴ CHIPS TO SEE
STA MMU+6 ;SAVE NEW ╓╔├ BANK # INFO
JSR ╙TASH╥┴═/╞ETCH╥┴═ ETC...
;CALL ╟┼╧╙ TO TURN ON ─═┴ CHIP
PLA ;RESTORE ╓╔├ BANK #
STA MMU+6
├OMMODORE 64/128 ╟┼╧╙ ╞ILE TYPES,
AND IF THE DESK╘OP AND/OR GEO─EBUGGER CAN LOAD THEM.
├┬═ ╟┼╧╙ ╧PEN FROM
TYPE FILE TYPE DESK╘OP ─ESCRIPTION
---- --------------- ------- ---------------------------------------
─┼╠ ANYTHING NO ─ELETED FILE
╙┼╤ ╬╧╘_╟┼╧╙ NO ├OMMODORE SEQUENTIAL DATAFILE, PROBABLY
GENERATED BY ┬┴╙╔├ PROGRAM.
╙┼╤ ─┴╘┴ NO ╙AME AS ABOVE, WITH HEADER ADDED BY ╔CON ┼DITOR.
---- --------------- ------- ------------------------------------------------
╨╥╟ ╬╧╘_╟┼╧╙ YES *1 ├OMMODORE ┬┴╙╔├ OR ASSEMBLY PROGRAM.
╔F THE FILE IS A ┬┴╙╔├ PROGRAM, THEN IT WAS
PROBABLY CREATED USING ├64 OR ├128 ┬┴╙╔├'S
"╙┴╓┼" COMMAND. ╘HE DESK╘OP CAN ALWAYS LOAD SUCH
A PROGRAM, AND IN SOME CASES CAN ╘URBO-LOAD IT.
╔F THE FILE IS AN ASSEMBLY-LANGUAGE PROGRAM,
THEN IT WAS PROBABLY CREATED USING AN ASSEMBLER
UTILITY, OR USING ├128 ┬┴╙╔├'S "┬╙┴╓┼" COMMAND.
╨╥╟ ┬┴╙╔├ YES *2 ├OMMODORE ┬┴╙╔├ PROGRAM, WITH HEADER BLOCK
ATTACHED BY ╔CON ┼DITOR. ╔F PROGRAM IS LESS THAN
31╦ IN SIZE, THE DESK╘OP WILL HAVE ╟┼╧╙
╘URBO-LOAD IT.
╨╥╟ ┴╙╙┼═┬╠┘ YES *3 ├OMMODORE ASSEMBLY PROGRAM, WITH HEADER BLOCK
ATTACHED BY ╔CON ┼DITOR. ╔F PROGRAM LOADS TO
APPLICATION SPACE ($400-$7╞╞╞), THEN THE DESK╘OP
WILL HAVE ╟┼╧╙ ╘URBO-LOAD IT.
---- --------------- ------- ------------------------------------------------
╒╙╥ ╬╧╘_╟┼╧╙ NO ╧LD ├OMMODORE "USER" FILE.
╒╙╥ ┬┴╙╔├ NO ╔╠╠┼╟┴╠ ├╧═┬╔╬┴╘╔╧╬
╒╙╥ ┴╙╙┼═┬╠┘ NO ╔╠╠┼╟┴╠ ├╧═┬╔╬┴╘╔╧╬
╒╙╥ ─┴╘┴ NO ╔╠╠┼╟┴╠ ├╧═┬╔╬┴╘╔╧╬
╒╙╥ ╙┘╙╘┼═ NO ╟┼╧╙ SYSTEM FILE (╙┼╤ OR ╓╠╔╥ STRUCTURE)
╒╙╥ ─┼╙╦_┴├├ YES ╟┼╧╙ DESK ACCESSORY (╙┼╤ STRUCTURE)
╒╙╥ ┴╨╨╠╔├┴╘╔╧╬ YES ╟┼╧╙ APPLICATION FILE (╙┼╤ OR ╓╠╔╥)
╒╙╥ ┴╨╨╠_─┴╘┴ YES DATA FILE FOR A ╟┼╧╙ APP. (╙┼╤ OR ╓╠╔╥)
╒╙╥ ╞╧╬╘ NO ╟┼╧╙ FONT FILE (╓╠╔╥)
╒╙╥ ╨╥╔╬╘┼╥ NO ╟┼╧╙ PRINTER DRIVER (╙┼╤)
╒╙╥ ╔╬╨╒╘_─┼╓╔├┼ NO ╟┼╧╙ INPUT DEVICE (MOUSE, KOALA, ETC. ╙┼╤)
╒╙╥ ─╔╙╦_─┼╓╔├┼ NO ╟┼╧╙ DISK DEVICE DRIVER
╒╙╥ ╙┘╙╘┼═_┬╧╧╘ NO ╟┼╧╙ SYSTEM BOOT FILE
(FOR ╟┼╧╙, ╟┼╧╙ ┬╧╧╘, ╟┼╧╙ ╦┼╥╬┴╠)
╒╙╥ ╘┼═╨╧╥┴╥┘ NO ╘EMPORARY FILE TYPE, FOR SWAP FILES.
╒╙╥ ┴╒╘╧_┼╪┼├ YES ┴PP (╙┼╤ OR ╓╠╔╥) WHICH LOADS AND RUNS UPON BOOT
╒╙╥ ╔╬╨╒╘_128 NO ╟┼╧╙ 128 ╔NPUT DRIVER
---- --------------- ------- ------------------------------------------------
╥┼╠ ╬╧╘_╟┼╧╙ NO ├OMMODORE RANDOM-ACCESS DATAFILE, AS IF
GENERATED BY ┬┴╙╔├ PROGRAM. ├ANNOT BY GIVEN
AN ICON BY ╔CON ┼DITOR BECAUSE WOULD DESTORY
EXISTING POINTER TO DATA CHAIN.
---- --------------- ------- ------------------------------------------------
╬OTES:
*1: (╨╥╟, ╬╧╘_╟┼╧╙)
╫HEN YOU TRY TO OPEN THIS TYPE OF PROGRAM FROM THE DESK╘OP, THE DESK╘OP'S
"─O┬ASIC╠OAD" ROUTINE WILL LOAD THE PROGRAM'S FIRST DATA BLOCK, TO CHECK ITS
LOAD ADDRESS.
ADDR < $0400
╔S A "STACK-GRABBING" ASSEMBLY LANGUAGE PROGRAM. ╟┼╧╙ CANNOT
╘URBO-LOAD THIS, SO WE FORCE ┬┴╙╔├ TO EXECUTE: ╠╧┴─ "NAME",8,1.
ADDR = $0801 ($1├01 ON 128)
╔S A ┬┴╙╔├ PROGRAM. ╘HE DESK╘OP WILL CHECK THE FILE SIZE
INFORMATION IN THE DIRECTORY ENTRY TO SEE IF THE PROGRAM
CAN BE ╘URBO-LOADED. ╔F THE ┬┴╙╔├ PROGRAM IS <= 30480 BYTES,
THE DESK╘OP WILL HAVE ╟┼╧╙ ╘URBO-LOAD IT, AND THEN FORCE ┬┴╙╔├
TO EXECUTE THE ╥╒╬ COMMAND. ╔F THE ┬┴╙╔├ PROGRAM IS LARGER THAN
THIS, THE DESK╘OP WILL NOT LOAD IT.
ADDR = OTHER
╘HE ├64 DESK╘OP WILL NOT ALLOW YOU TO LOAD THIS APPLICATION.
╘HIS IS SO THE DESK╘OP WILL NOT ATTEMPT TO RUN A ├128 ┬┴╙╔├
PROGRAM UNDER ├64 ┬┴╙╔├.
╘HE ├128 DESK╘OP WILL USE THE ┬┴╙╔├ "┬╧╧╘" COMMAND TO LOAD
THIS FILE.
╔F YOU ATTEMPT TO OPEN SUCH A PROGRAM FROM ╟EO─EBUGGER, IT MUST HAVE A LOAD
ADDRESS OF $0400 OR HIGHER. ╟EO─EBUGGER WILL NOT CHECK THE LOAD ADDRESS TO SEE
IF THE PROGRAM IS ┬┴╙╔├ CODE, SO YOU CAN USE GEO─EBUGGER TO EXAMINE THE
INTERNAL STRUCTURE OF ├64 AND ├128 ┬┴╙╔├ PROGRAMS.
*2: (╨╥╟, ┬┴╙╔├)
╘HE DESK╘OP WILL ATTEMPT TO LOAD SUCH A FILE IN THE SAME MANNER AS THE
"ADDR = $0801" CASE ABOVE. ┴S NOTED ABOVE, THE DEBUGGER CAN ALSO LOAD
SUCH A PROGRAM FILE.
*3: (╨╥╟, ┴╙╙┼═┬╠┘)
╫HEN YOU TRY TO OPEN THIS TYPE OF FILE FROM THE DESK╘OP, THE DESK╘OP'S
"─O┴SSEMBLY╠OAD" ROUTINE WILL LOAD THE FILE'S FIRST DATA BLOCK, TO CHECK ITS
LOAD ADDRESS.
ADDR < $0400
╔S A "STACK-GRABBING" ASSEMBLY LANGUAGE PROGRAM. ╟┼╧╙ CANNOT
╘URBO-LOAD THIS, SO THE DESK╘OP FORCES ┬┴╙╔├ TO EXECUTE:
╠╧┴─ "NAME",8,1.
$0400 <= ADDR < $0800
╘HE ├64 DESK╘OP WILL NOT ALLOW YOU TO LOAD THIS PROGRAM,
BUT THE ├128 DESK╘OP WILL.
ADDR >= $0800
╘HE DESK╘OP WILL LOAD THE PROGRAM'S HEADER BLOCK, TO CHECK
ITS ENDING ADDRESS. ╔F THE PROGRAM ENDS BELOW $8000, THE
DESK╘OP WILL HAVE ╟┼╧╙ ╘URBO-LOAD THE PROGRAM. ┬┴╙╔├ WILL
THEN EXECUTE A ╙┘╙ TO THE PROGRAM'S INIT ADDRESS FROM THE
HEADER BLOCK. ╔F THE PROGRAM ENDS AT OR ABOVE $8000, THE
DESK╘OP WILL FORCE ┬┴╙╔├ TO EXECUTE:
╠╧┴─ "NAME",8,1:╙┘╙ (INIT ADDRESS)
╔F YOU ATTEMPT TO OPEN SUCH A PROGRAM FROM ╟EO─EBUGGER, IT MUST HAVE A LOAD
ADDRESS OF $0400 OR HIGHER. ╟EO─EBUGGER WILL SET THE ╨├ TO THE VALUE OF THE
INIT ADDRESS WHICH IS STORED IN THE HEADER BLOCK. ╟EO─EBUGGER WILL NOT CHECK
THE ENDING ADDRESS OF THE PROGRAM.
╟EO─EBUGGER ═EMORY ╥EAD/╫RITE ╥OUTINE
-------------------------------------
╫HENEVER THE DEBUGGER IS ASKED TO READ OR WRITE A BYTE TO MEMORY, IT WORKS
THROUGH THE ╠OAD┬YTE/╙AVE┬YTE ROUTINE IN ═ONITOR/C64IO. ┼XAMPLES INCLUDE:
- EXAMINING AND MODIFYING MEMORY USING "┴" OR "═" OPEN COMMANDS
- SETTING AND CLEARING INSTRUCTION BREAKPOINTS
- MEMORY RANGE COMMANDS: MOVE, FILL, DIFF, FIND
╘HESE TWO ROUTINES ARE BOTH VERY SHORT: THEY SIMPLY SET A FLAG INDICATING
WHETHER WE ARE READING OR WRITING, AND THEN CALL ╠OAD╙AVE┬YTE.
╠OAD╙AVE┬YTE GOES THROUGH A FOUR STEP PROCESS TO DETERMINE WHAT TO DO WITH THE
MEMORY ACCESS REQUEST. ╘HIS IS A COMPLICATED PROCESS BECAUSE THERE ARE MANY
CASES WHERE A DIRECT LOAD/SAVE IS OUT OF THE QUESTION:
- THE USER IS TRYING TO MODIFY A BYTE IN ZERO PAGE, BUT THE MONITOR
KEEPS THE USER'S ZERO PAGE IN THE MONITOR VARIABLE SPACE
- THE USER IS TRYING TO MODIFY A BYTE IN THE APPLICATION SPACE,
BUT IT HAS BEEN SWAPPED OUT TO THE ╥┼╒
- THE USER IS TRYING TO WRITE OVER MONITOR CODE
- THE USER IS TRYING TO READ/WRITE TO THE OTHER BANK THAN IS CURRENTLY
IN DURING MONITOR EXECUTION.
- THE USER IS TRYING TO MODIFY ├╨╒_─┴╘┴ OR CONFIG, WHICH WOULD
IMMEDIATELY CHANGE THE MEMORY MAP AND PROBABLY CRASH THE DEBUGGER.
╠OAD╙AVE┬YTE'S FOUR STEP PROCESS CAN BE BROKEN DOWN AS:
1) ╚ANDLE MEMORY MAP CONTROLS AT $0000, $0001, AND $╞╞00 (128)
AS A SPECIAL CASE.
2) ╔F THIS ACCESS IS IN THE ╔╧ SPACE, AND ╔╧ IS ENABLED, USE THE
╔╧ ┴──╥┼╙╙ ╘┴┬╠┼ TO DECIDE WHICH ╔╧ LOCATIONS HE CAN MODIFY DIRECTLY
AND WHICH ONES WE KEEP SHADOWS FOR IN THE MONITOR VARIABLE AREA.
3) ╔F THIS ACCESS IS IN A SPACE WHERE ╥╧═ IS CURRENTLY IN, THEN
ONLY ALLOW READ OPERATIONS. ╘HE DEBUGGER DOES NOT ALLOW
"BLEED THROUGH" WRITES TO RAM UNDERNEATH ROM.
4) ╔F NONE OF THE ABOVE CASES HOLD, THEN THE ACCESS MUST BE TO RAM.
├ALCULATE THE EFFECTIVE BANK NUMBER (128 ONLY), AND USE THE
╥┴═ ┴──╥┼╙╙ ╘┴┬╠┼ TO DECIDE WHICH LOCATIONS NEED RE-DIRECTION OR
ARE ILLEGAL.
╚ERE IS THE KEY USED IN THE LOOKUP TABLES ON THE FOLLOWING PAGES:
MINI / SUPER / BACK SUPER
═ = MINI DEBUGGER CODE AREA (ILLEGAL TO READ/WRITE)
╙ = SUPER DEBUGGER CODE AREA (MUST READ/WRITE TO ╥┼╒ SPACE)
┬ = BACKRAM SUPER DEBUGGER CODE AREA (ILLEGAL TO READ/WRITE)
╪ = USED BY ALL THREE MONITORS, NO COPY SAVED (ILLEGAL TO READ/WRITE)
╘ = SUPER DEBUGGER TEXT SCREEN AREA (├╧╠╧╥_═┴╘╥╔╪: R/W TO ╥┼╒ SPACE)
╥ = READ ONLY
─ = READ/WRITE DIRECTLY
┌ = ZERO PAGE RAM WHICH MONITOR USES (MUST READ/WRITE TO SAVED COPY OF AREA)
NA = NOT APPLICABLE (FOR EXAMPLE, ╔╧ CANNOT SHOW UP AT $0400)
╙TEP 1: CHECK FOR OVERRIDING ╔╧ LOCATIONS
-----------------------------------------
╨SEUDO-CODE:
├64═ODE:
$0000 DIRECT, READ ONLY
$0001 <--> APP═EM═AP (MEMORY MAP INFO)
├128:
$0000 DIRECT, READ ONLY
$0001 <- ┬2 AND ┬1 -> APP├╨╒_┬21 (VIDEO CONTROL INFO)
<- OTHER BITS -> APP═EM═AP (NON ESSENTIAL INFO)
$╞╞00 <--> APP├ONFIG (MEMORY MAP INFO)
$╞╞01-$╞╞04 SPECIAL CASE: IS READING ╨├╥┴-╨├╥─
OR IS SENDING ONE OF THOSE FOUR TO ├ONFIG
╙TEP 2: CHECK FOR ╔╧ SPACE ACCESSES
-----------------------------------
╔╧ ┴──╥┼╙╙ ╘┴┬╠┼
├64 ═ODE....... ├128 ═ODE..............
═EMORY RANGE USAGE / ╟┼╧╙ EQUATE ╔╧ ╔╧
------------- ----------------------- ------- ------- ------- ------- -------
$0000 - $─010 RAM / IO: ╓╔├ REGS ─/─ ─/─/─
$─011 * IO: ╓╔├ GRCTRL1 APP╓╔├1 APP╓╔├1
$─012 - $─014 IO: ╓╔├ REGS ─/─ ─/─/─
$─015 * IO: ╓╔├ MOBENBLE APP╓╔├2 APP╓╔├2
$─016 * IO: ╓╔├ GRCTRL2 APP╓╔├3 APP╓╔├3
$─017 IO: ╓╔├ REG ─/─ ─/─/─
$─018 * IO: ╓╔├ GRMEMPTR APP╓╔├4 APP╓╔├4
$─019 - $─020 IO: ╓╔├ REGS ─/─ ─/─/─
$─021 * IO: ╓╔├ BAKCLR0 APP╓╔├5 APP╓╔├5
$─022 - $─02╞ IO: ╓╔├ REGS ─/─ ─/─/─
$─030 * IO: ├128 2═╚┌ CTRL ─/─ APP├LK
$─031 - $─4╞╞ RAM / IO / ROM ─/─ ─/─/─
$─500 * IO: ├128 ══╒ CONTROL ─/─ APP├ONFG
$─501 - $─504 IO: ├128 ══╒ REGS ─/─ ─/─/─
$─505 * IO: ├128 ══╒ ═├╥ ─/─ ╥/╥/╥
$─506 * IO: ├128 ══╒ "╥├╥" ─/─ APP╥├╥*1
$─507 - $─50┴ * IO: ├128 ══╒ ┌╨ RELOC ─/─ ╥/╥/╥
$─50┬ - $─7╞╞ RAM / IO / ROM ─/─ ─/─/─
$─800 - $─┬╞╞ * IO: TEXT COLORS "CTAB" ╥/╥ *2*
$─├00 - $─├╞╞ RAM / IO / ROM ─/─ ─/─/─
$──00 * IO: CIA2BASE (╓╔├ MMAP) APP├╔┴2_┬10 *3* APP├╔┴2_┬10
$──01 - $─┼╞╞ RAM / IO / ROM ─/─ ─/─/─
$─╞00 - $─╞09 * IO: ╥┼╒ ─═┴ CONTROL ╥/╥ ╥/╥/╥
$─╞0┴ - $┼╞╞╞ RAM / IO / ROM ─/─ ─/─/─
$╞001 - $╞╞╞╞ RAM / ROM ─/─ ─/─/─
------------- ----------------------- ------- ------- ------- ------- -------
├ONCLUSIONS:
╬O DIFFERENCES BETWEEN THREE DEBUGGERS- JUST BETWEEN TWO MACHINES.
╧NLY THREE POSSIBLITIES: DIRECT, READ-ONLY, OR ONE OF SEVERAL
SPECIAL CASE ROUTINES.
╞OR EACH AREA, NEED BYTE IN TABLE WHICH CONTAINS TWO THREE-BIT CODES,
DENOTING WHAT TO DO ON THAT MACHINE.
╘ABLE SIZE: 25 LINES * (1 WORD + 1 BYTE) = 75 BYTES
╨LUS ╓╔├ HANDLER ROUTINE (USES ADDRESS TO SEE WHICH ╓╔├ REGISTERS
WE WANT, AND THEN READS/WRITES TO MONITOR SHADOW FOR THAT REGISTER.
╨LUS HANDLER ROUTINES FOR APP├LK, APP├ONFIG, APP╥├╥, AND APP├╔┴2_┬10.
╬╧╘┼ 1: IN 128 MODE, $─506 IS SPLIT UP BETWEEN APP╥├╥_┬76 (╓╔├ BANK INFO)
AND APP╥├╥_┬50 (MEMORY MAP INFO).
╬╧╘┼ 2: THE TEXT SCREEN COLOR TABLE IS LOCATED AT $─800-$─┬╞╞.
╔N ├64 MODE, WE ONLY ALLOW READS FROM THIS AREA, SO THE USER WON'T SCREW
UP THE MONITOR'S TEXT COLORS.
╔N ├128 MODE, THERE ARE ACTUALLY TWO COLOR TABLES AT THIS LOCATION.
┬IT 1 OF $0001 DETERMINES WHICH IS VISIBLE TO THE 6510. ╔F THIS BIT IS
CLEAR, WE ALLOW DIRECT READ/WRITES. ╔F THIS BIT IS SET, WE ONLY ALLOW READS.
╬╧╘┼ 3: BITS 1-0 OF LOCATION $──00 CONTROL WHICH 16╦ MEMORY BANK THE ╓╔├
CHIP USES, AND SO ARE SAVED IN APP├╔┴_┬10. ╘HE OTHER BITS (7-2) ARE WRITTEN TO/
READ FROM MEMORY. ├AUTION ERIC: IN ├64 MODE, MAKE SURE ╔╧ IS IN WHEN DOING THIS.
╨SEUDO-├ODE:
IF THE ADDRESS IS BETWEEN $─000 AND $─╞╞╞:
├64: CHECK LOCATION $0001.
╔F (┬1=1 OR ┬0=1), THEN ╔/╧ SPACE IN.
╔F ┬2=0, THEN 4╦ ├╚┴╥ ╥╧═ IS VISIBLE:
ONLY ALLOW READS.
╔F ┬2=1, THEN 4╦ OF ╔/╧ DEVICES ARE VISIBLE:
CALL TABLE LOOKUP ROUTINE, USING
╔╧ ┴──╥┼╙╙ ╘┴┬╠┼.
USE ┬5-┬3 OF RETURN BYTE TO DECIDE
WHAT TO DO.
ELSE CAN READ/WRITE DIRECTLY
├128: CHECK LOCATION $╞╞00:
╔F (┬0=0), THEN ╔/╧ SPACE IS IN.
CALL TABLE LOOKUP ROUTINE, USING
╔╧ ┴──╥┼╙╙ ╘┴┬╠┼.
USE ┬2-┬0 OF RETURN BYTE TO DECIDE
WHAT TO DO.
ELSE CAN READ/WRITE DIRECTLY
ELSE (ADDRESS IS NOT IN ╔╧ RANGE) GO TO STEP 3
╙TEP 3: CHECK FOR ╥╧═ ACCESS
----------------------------
├64 ═ODE ╥OM ╘RUTH ╘ABLE
LOCATION $0001
═EMORY RANGE ╫HAT ═IGHT ┬E ╘HERE 76543210 ╬OTES
------------- ----------------------- --------------- ------------------------
$0000 - $9╞╞╞ RAM --------
$┴000 - $┬╞╞╞ RAM / ┬ASIC ROM -------1 ┬0=1
$├000 - $─╞╞╞ RAM *1* --------
$┼000 - $╞╞╞╞ RAM / ╦ERNAL ROM ------1- ┬1=1
╬OTE THAT THERE ARE CASES WHERE CARTRIDGES PLUGGED INTO THE ├64 CAN OVERRIDE
THESE AREAS. ╘HE ├64 ╨ROG. ╥EF. ╟UIDE IS NOT VERY CLEAR ON THIS, SO ╔ WILL
NOT BE CONCERNED ABOUT CARTRIDGES FOR NOW. ┼─╙ 2/8/88.
╬OTE 1: THE CASE WHERE ├╚┴╥ ╥╧═ IS MAPPED IN FROM $─000 TO $─╞╞╞ HAS ALREADY
BEEN HANDLED BY ╔╧ TABLE.
├128 ═ODE ╥OM ╘RUTH ╘ABLE
LOCATION $╞╞00
═EMORY RANGE ╫HAT ═IGHT ┬E ╘HERE 76543210 ╬OTES
------------- ----------------------- --------------- ------------------------
$0000 - $3╞╞╞ RAM --------
$4000 - $7╞╞╞ RAM / ┬ASIC ROM LOW ------0- ┬1=0
$8000 - $┬╞╞╞ RAM / ┬ASIC ROM HIGH ----AB-- ┬3=0 OR ┬2=0
$├000 - $╞╞╞╞ RAM / ╦ERNAL ROM --AB---- ┬5=0 OR ┬4=0
╔ DON'T COMPLETELY UNDERSTAND ├128 EXTERNAL ROMS YET. ╔ AM GOING TO ASSUME THAT
┬5-┬1 IN $╞╞00 DETERMINE IF THERE IS ANY ╥╧═ IN. ╔ DON'T CARE IF IS ╦ERNAL,
EXTERNAL, INTERNAL, OR CARTRIDGE ROM. ╔ JUST WON'T WRITE TO THOSE RANGES IF THE
BITS ARE CLEAR.
╨SEUDO-CODE:
┴S IT TURNS OUT, THE FASTEST AND TIGHTEST CODE TO HANDLE THIS
SIMPLY CHECKS ADDRESS RANGES AND BITS DIRECTLY. ╙EE THE CODE.
╙TEP 4: ╥┴═ ACCESS
------------------
├64 ═ODE ├128 ═ODE......
═EMORY RANGE USAGE / ╟┼╧╙ EQUATE ╥┴═ ╥┴═ ┬1 ╥┴═ ┬0
------------- ----------------------- ------- ------- -------
$0000 - $0001 ┴LREADY HANDLED BY STEP 1.
$0002 - $00── * ZERO PAGE (MON SWAPS) ┌/┌ NA ┌/┌/┌
$00─┼ - $00╞╞ ZERO PAGE ─/─ NA ─/─/─
$0100 - ╙╨ * STACK (MONITOR USES) ╪/╪ NA ╪/╪/╪
╙╨+1 - $01╞╞ STACK (USER'S DATA) ─/─ NA ─/─/─ *1*
$0200 - $0313 RAM ─/─ ─/─/─ ─/─/─
$0314 - $0319 * BAS╔╥╤╓EC, ┬╥╦, ╬═╔ ╥/╥ ─/─/─ ╥/╥/╥
$031┴ - $0333 RAM ─/─ ─/─/─ ─/─/─
$0334 - $03╞┬ * MONITOR CODE ╪/╪ ╪/╪/╪ ╪/╪/╪
$03╞├ - $03╞╞ MONITOR ╩╙╥ AREA ─/─ ─/─/─ ─/─/─
$0400 - $1╞╞╞ * RAM ─/╙ ─/╙/─ ─/─/─
$2000 - $3┬╞╞ * RAM ─/╙ ─/╙/─ ─/─/┬
$3├00 - $5╞╞╞ * RAM ═/╙ ═/╙/─ ─/─/┬
$6000 - $78╞╞ * RAM ─/╙ ─/╙/─ ─/─/┬
$7900 - $8┬╞╞ * RAM ─/─ ─/─/─ ─/─/┬
$8├00 - $8╞┼7 * RAM (MONITOR TEXT SCR) ╥/╘ ╥/╘/─ ─/─/┬
$8╞┼8 - $9╞╞╞ * RAM ─/─ ─/─/─ ─/─/┬
$┴000 - $╞╞╞9 RAM / ROM IF >$─000 ─/─ ─/─/─ ─/─/─
$╞╞╞┴ - $╞╞╞╞ * ╬═╔_╓┼├╘╧╥, ╥┼╙┼╘, ╔╥╤ ╥/╥ ╥/╥/╥ ╥/╥/╥
------------- ----------------------- ------- ------- ------- ------- -------
├ONCLUSIONS:
═INI DEBUGGER AND ╙UPER DEBUGGERS ARE COMPLETELY DIFFERENT CASES.
╒SE CONDITIONAL ASSEMBLY TO DECIDE WHICH TABLE TO USE.
═INI DEBUGGER HAS FOUR POSSIBILITIES: DIRECT, READ-ONLY, ILLEGAL,
AND ZERO PAGE. ╞OR EACH AREA, NEED BYTE IN TABLE WHICH CONTAINS
TWO THREE-BIT CODES, DENOTING WHAT TO DO ON THAT MACHINE.
╘ABLE SIZE: 15 LINES * (1 WORD + 1 BYTE) = 45 BYTES
┴LL TABLE VALUES ARE STANDARD CASES.
╘HE SUPER DEBUGGER'S TABLE IS SIMILAR: FOR EACH AREA, THERE ARE SIX
POSSIBILITIES, ALL STANDARD. ╘HE TABLE NEEDS TO GIVE US A WORD VALUE
WHICH CONTAINS FIVE THREE-BIT CODES:
MACHINE MONITOR ACCESS TYPE BITS IN WORD
--------------- --------------- --------------- ------------
128 MODE BACKRAM SUPER BANK 0 ACCESS ┬14-┬12
128 MODE BACKRAM SUPER BANK 1 ACCESS ┬11-┬9
128 MODE ╥┼╒ SUPER BANK 0 ACCESS ┬8-┬6
128 MODE ╥┼╒ SUPER BANK 0 ACCESS ┬2-┬0
64 MODE ╥┼╒ SUPER ┬5-┬3
--------------- --------------- --------------- ------------
╘ABLE SIZE: 18 LINES * (1 WORD + 2 BYTES) = 76 BYTES
┴LL TABLE VALUES ARE STANDARD CASES.
╬╧╘┼ 1: THE REGION ╙╨+1 TO $313 CAN BE COMBINED, BECAUSE THE EFFECTIVE BANK
CALCULATION WILL NOT GIVE AN ADDRESS <$200 IN BANK 1.
╨SEUDO-CODE:
FIRST CALCULATE EFFECTIVE BANK (ONLY NECESSARY ON ├-128)
IF ADDRESS IS LESS THAN $200, IS ┬ANK 0.
IF APP├ONFIG ┬6 = 1 THEN (╬╧╘┼: IGNORE ┬7)
(BANK 1 IS ENABLED, BUT WE MUST CHECK RAM SHARING)
IF ADDRESS HIGH BYTE >= $80
IF APP╥├╥ ┬3 = 1
USE LOOKUP TABLE FOR APP╥├╥ ┬1-┬0:
00 $╞├
01 $╞0
10 $┼0
11 $├0
IF ADDRESS HIGH BYTE < THIS VALUE, IS BANK 1
ELSE IS BANK 0
ELSE IS BANK 1
ELSE (ADDRESS HIGH BYTE < $80)
IF APP╥├╥ ┬2 = 1
USE LOOKUP TABLE FOR APP╥├╥ ┬1-┬0:
00 $04
01 $10
10 $20
11 $40
IF ADDRESS HIGH BYTE >= THIS VALUE, IS BANK 1
ELSE IS BANK 0
ELSE IS BANK 1
ELSE IS BANK 0
╘╚┼╙┼ ┬╔╘ ╬╒═┬┼╥╙ ╚┴╓┼ ├╚┴╬╟┼─
╘HEN USE TABLE TO DETERMINE WHAT TO DO WITH THAT ADDRESS, CONSIDERING THE
MACHINE, MONITOR TYPE, AND BANK DESIRED.
IF USING MINI DEBUGGER
CALL TABLE LOOKUP ROUTINE, USING ═╔╬╔ ╥┴═ ┴──╥┼╙╙ ╘┴┬╠┼
IF IN ├64 MODE:
USE ┬5-┬3 OF RETURN BYTE TO DECIDE WHAT TO DO.
ELSE (├128 MODE):
USE ┬2-┬0 OF RETURN BYTE TO DECIDE WHAT TO DO.
IF USING SUPER DEBUGGER:
CALL TABLE LOOKUP ROUTINE, USING ═╔╬╔ ╥┴═ ┴──╥┼╙╙ ╘┴┬╠┼
IF IN ├64 MODE:
USE ┬5-┬3 OF RETURN BYTE TO DECIDE WHAT TO DO.
ELSE (├128 MODE):
IF SUPER DEBUGGER
IF ACCESSING BANK 1
USE ┬2-┬0 OF RETURN WORD
IF ACCESSING BANK 0
USE ┬8-┬6 OF RETURN WORD
IF BACKRAM SUPER DEBUGGER
IF ACCESSING BANK 1
USE ┬11-┬9 OF RETURN WORD
IF ACCESSING BANK 0
USE ┬14-┬12 OF RETURN WORD
╘HIS DECISION TREE SEEMS FAIRLY COMPLICATED, BUT IT BREAKS DOWN PRETTY WELL
IN THE CODE.
╟ENERAL ═EMORY ╨ROTECT ═AP
--------------------------
├64 ═ODE....... ├128 ═ODE..............
═EMORY RANGE USAGE / ╟┼╧╙ EQUATE ╥┴═ ╔╧ ╥┴═ ┬1 ╥┴═ ┬0 ╔╧
------------- ----------------------- ------- ------- ------- ------- -------
$0000 * ├╨╒_──╥ 6510 ──╥ ALL CASES: ╥/╥ ALL CASES: ╥/╥
$0001 * ├╨╒_─┴╘┴ 6510 DATA PORT <-> APP═EM═AP <-> APP├╨╒_┬21+APP═EM═AP
$0002 - $00── * ZERO PAGE (MON SWAPS) ┌/┌ NA NA ┌/┌/┌ NA
$00─┼ - $00╞╞ ZERO PAGE ─/─ NA NA ─/─/─ NA
$0100 - ╙╨ * STACK (MONITOR USES) ╪/╪ NA NA ╪/╪/╪ NA
╙╨+1 - $01╞╞ STACK (USER'S DATA) ─/─ NA NA ─/─/─ NA
$0200 - $0313 RAM ─/─ NA ─/─/─ ─/─/─ NA
$0314 - $0319 * BAS╔╥╤╓EC, ┬╥╦, ╬═╔ ╥/╥ NA ─/─/─ ╥/╥/╥ NA
$031┴ - $0333 RAM ─/─ NA ─/─/─ ─/─/─ NA
$0334 - $03╞┬ * MONITOR CODE ╪/╪ NA ╪/╪/╪ ╪/╪/╪ NA
$03╞├ - $03╞╞ MONITOR ╩╙╥ AREA ─/─ NA ─/─/─ ─/─/─ NA
$0400 - $1╞╞╞ * RAM ─/╙ NA ─/╙/─ ─/─/─ NA
$2000 - $3┬╞╞ * RAM ─/╙ NA ─/╙/─ ─/─/┬ NA
$3├00 - $3╞╞╞ * RAM ═/╙ NA ═/╙/─ ─/─/┬ NA
$4000 - $5╞╞╞ * RAM (┬╟ SCREEN) ═/╙ NA ═/╙/─ ─/─/┬ NA
$6000 - $78╞╞ * RAM ─/╙ NA ─/╙/─ ─/─/┬ NA
$7900 - $8┬╞╞ * RAM ─/─ NA ─/─/─ ─/─/┬ NA
$8├00 - $8╞┼7 * ├╧╠╧╥_═┴╘╥╔╪ / RAM ─/─ NA ─/─/─ ─/─/┬ NA
$8╞┼8 - $8╞╞╞ * RAM ─/─ NA ─/─/─ ─/─/┬ NA
$9000 - $9╞╞╞ * RAM ─/─ NA ─/─/─ ─/─/┬ NA
$┴000 - $┬╞╞╞ RAM (╞╟ SCREEN) ─/─ NA ─/─/─ ─/─/─ NA
$├000 - $├╞╞╞ RAM ─/─ NA ─/─/─ ─/─/─ NA
$─000 - $─010 IO: ╓╔├ REGS ─/─ ─/─ ─/─/─ ─/─/─ ─/─/─
$─011 * IO: ╓╔├ GRCTRL1 ─/─ APP╓╔├1 ─/─/─ ─/─/─ APP╓╔├1
$─012 - $─014 IO: ╓╔├ REGS ─/─ ─/─ ─/─/─ ─/─/─ ─/─/─
$─015 * IO: ╓╔├ MOBENBLE ─/─ APP╓╔├2 ─/─/─ ─/─/─ APP╓╔├2
$─016 * IO: ╓╔├ GRCTRL2 ─/─ APP╓╔├3 ─/─/─ ─/─/─ APP╓╔├3
$─017 IO: ╓╔├ REG ─/─ ─/─ ─/─/─ ─/─/─ ─/─/─
$─018 * IO: ╓╔├ GRMEMPTR ─/─ APP╓╔├4 ─/─/─ ─/─/─ APP╓╔├4
$─019 - $─020 IO: ╓╔├ REGS ─/─ ─/─ ─/─/─ ─/─/─ ─/─/─
$─021 * IO: ╓╔├ BAKCLR0 ─/─ APP╓╔├5 ─/─/─ ─/─/─ APP╓╔├5
$─022 - $─02╞ IO: ╓╔├ REGS ─/─ ─/─ ─/─/─ ─/─/─ ─/─/─
$─030 * IO: ├128 2═╚┌ CTRL ─/─ ─/─ ─/─/─ ─/─/─ APP├LK
$─031 - $─4╞╞ RAM / IO / ROM ─/─ ─/─ ─/─/─ ─/─/─ ─/─/─
$─500 * IO: ├128 ══╒ CONTROL ─/─ ─/─ ─/─/─ ─/─/─ APP├ONFG
$─501 - $─504 IO: ├128 ══╒ REGS ─/─ ─/─ ─/─/─ ─/─/─ ─/─/─
$─505 * IO: ├128 ══╒ ═├╥ ─/─ ─/─ ─/─/─ ─/─/─ ╥/╥/╥
$─506 * IO: ├128 ══╒ "╥├╥" ─/─ ─/─ ─/─/─ ─/─/─ APP╥├╥*1
$─507 - $─50┴ * IO: ├128 ══╒ ┌╨ RELOC ─/─ ─/─ ─/─/─ ─/─/─ ╥/╥/╥
$─50┬ - $─7╞╞ RAM / IO / ROM ─/─ ─/─ ─/─/─ ─/─/─ ─/─/─
$─800 - $─┬╞╞ * IO: TEXT COLORS "CTAB" ─/─ ╥/╥ ─/─/─ ─/─/─ *2*
$─├00 - $─├╞╞ RAM / IO / ROM ─/─ ─/─ ─/─/─ ─/─/─ ─/─/─
$──00 * IO: CIA2BASE (╓╔├ MMAP) ─/─ APP├╔┴2_┬10 ─/─/─ ─/─/─ *3*
$──01 - $─┼╞╞ RAM / IO / ROM ─/─ ─/─ ─/─/─ ─/─/─ ─/─/─
$─╞00 - $─╞09 * IO: ╥┼╒ ─═┴ CONTROL ─/─ ╥/╥ ─/─/─ ─/─/─ ╥/╥/╥
$─╞0┴ - $─╞╞╞ RAM / IO / ROM ─/─ ─/─ ─/─/─ ─/─/─ ─/─/─
$┼000 - $┼╞╞╞ RAM / ROM ─/─ NA ─/─/─ ─/─/─ NA
$╞000 * ├128: CONFIG REGISTER ─/─ NA ALL CASES: <-> APP├ONFIG
$╞001 - $╞╞╞9 RAM / ROM ─/─ NA ─/─/─ ─/─/─ NA
$╞╞╞┴ - $╞╞╞╞ * ╬═╔_╓┼├╘╧╥, ╥┼╙┼╘, ╔╥╤ ╥/╥ NA ╥/╥/╥ ╥/╥/╥ NA
------------- ----------------------- ------- ------- ------- ------- -------
┴SSUMPTIONS:
╥╧═ DECODED SEPARATELY
ADDRESS DECODE FOR RAM BANK SHARING ALREADY WORKED OUT
CAN SIMPLIFY TABLE A BIT WITH .IF ═╔╬╔
╬╧╘┼ 1: IN 128 MODE, $─506 IS SPLIT UP BETWEEN APP╥├╥_┬76 (╓╔├ BANK INFO)
AND APP╥├╥_┬50 (MEMORY MAP INFO).
╬╧╘┼ 2: THE TEXT SCREEN COLOR TABLE IS LOCATED AT $─800-$─┬╞╞.
╔N ├64 MODE, WE ONLY ALLOW READS FROM THIS AREA, SO THE USER WON'T SCREW
UP THE MONITOR'S TEXT COLORS.
╔N ├128 MODE, THERE ARE ACTUALLY TWO COLOR TABLES AT THIS LOCATION.
┬IT 1 OF $0001 DETERMINES WHICH IS VISIBLE TO THE 6510. ╔F THIS BIT IS
CLEAR, WE ALLOW DIRECT READ/WRITES. ╔F THIS BIT IS SET, WE ONLY ALLOW READS.
╬╧╘┼ 3: BITS 1-0 OF LOCATION $──00 CONTROL WHICH 16╦ MEMORY BANK THE ╓╔├
CHIP USES, AND SO ARE SAVED IN APP├╔┴_┬10. ╘HE OTHER BITS (7-2) ARE WRITTEN TO/
READ FROM MEMORY. ├AUTION ERIC: IN ├64 MODE, MAKE SURE ╔╧ IS IN WHEN DOING THIS.
╫ARN IN MANUAL THAT WE DO NOT ALLOW BLEED-THROUGH. ╘HEY WILL HAVE TO SWAP
RAM IN MANUALLY TO CHANGE IT. ╘HIS MEANS WE CAN'T USE A SINGLE ═╧╓┼ COMMAND
TO COPY ROM TO RAM...
╟EO─EBUGGER HAS LIMITED SUPPORT FOR THE CREATION AND DEBUGGING OF
├┬═ APPLICATIONS. ╘HE ├128 DESK╘OP HAS SOME BUGS RELATED TO LOADING
├┬═ APPLICATIONS.
╟EO╨ROGRAMMER CURRENTLY SUPPORTS THE ASSEMBLY AND LINK OF:
╟┼╧╙ APPLICATIONS (╙┼╤ OR ╓╠╔╥, WITH HEADER)
╟┼╧╙ DESK ACCESSORIES (╙┼╤ BY DEFINITION, WITH HEADER)
├┬═ APPLICATIONS STANDARD ├OMMODORE ╨╥╟ FILE
(╟┼╧╙ FILE TYPE = ╬╧╘_╟┼╧╙, DOES NOT HAVE
A HEADER BLOCK). ─ESK╘OP HAS RESTRICTIONS
ON WHICH LOAD ADDRESSES IT CAN HANDLE.
├OMMODORE ┬┴╙╔├'S ╠╧┴─ AND ┬╧╧╘ COMMANDS
CAN LOAD MOST ADDRESSES OK. ╟EO─EBUGGER CAN
LOAD MOST ADDRESSES OK.
╘HERE IS SOME AMOUNT OF SUPPORT IN THE DEBUGGER FOR LOADING AND DEBUGGING
├┬═ APPLICATIONS.
- CAN TOGGLE BETWEEN ANY KIND OF SCREEN THE ╓╔├ AND ╓─├ CHIPS
SUPPORT
- APP CAN TRASH ALL OF ╟┼╧╙ ADDRESS SPACE
╨ROBLEMS:
- ON ├128, DEBUGGER CAN ONLY LOAD A ├┬═ APP TO BANK 1, WHEREAS
┬┴╙╔├ EXPECTS SUCH AN APPLICATION TO RUN IN BANK 0. ┼ITHER WRITE
YOUR APPLICATION TO RUN IN EITHER BANK (SEE ╙AMPLE├┬═), OR USE
A CONSTANT SO YOU CAN ASSEMBLE IT TO RUN IN EITHER BANK.
- ╘HE DEBUGGER DOES NOT DO ANY ERROR CHECKING ON THE LOAD ADDRESS
OF A ├┬═ APPLICATION. ╔T WILL CRASH IF YOU TRY TO LOAD AN APP
BELOW $400. ┴PPLICATION CANNOT LOAD ABOVE THE $8000 AREA.
- ╟EO─EBUGGER FILLS THE TEXT COLOR TABLE ONCE. ╔F THE ├┬═ APPLICATION
FILLS THE TEXT COLOR TABLE (TABLE #1 ON THE 128), THE DEBUGGER'S
CHARACTERS WILL BE COLORED. ╔F THE ├┬═ APP FILLS WITH $0┬, THE
DEBUGGER CHARACTERS WILL BE INVISIBLE, SINCE THE DEBUGGER SETS THE
BACKGROUND TO $0┬.
- IF THE ├┬═ APP PUTS UP A SCREEN WHICH RESIDES IN THE $0400-$7╞╞╞ AREA,
THEN YOU WILL NOT BE ABLE TO VIEW IT FROM THE SUPER DEBUGGER USING ╞7
OR ╞8. ╘HIS IS BECAUSE THESE COMMANDS DO NOT SWAP THE DEBUGGER CODE OUT
OF THIS AREA: THE ╓╔├ CHIP WILL BE GIVEN THE CORRECT PARAMETERS, BUT IT
WILL BE DISPLAYING DEBUGGER CODE INSTEAD OF THE APPLICATION'S SCREEN
DATA.
╫ITH A LITTLE BIT OF WORK, YOU CAN GET GEO┴SSEMBLER AND GEO╠INKER TO GENERATE:
┴SSEMBLY-╔N-┬ASIC PROGRAM ┴ (╨╥╟-╬╧╘_╟┼╧╙) APPLICATION WHICH LOOKS LIKE A
┬┴╙╔├ PROGRAM, BUT REALLY ONLY HAS SEVERAL LINES OF ┬┴╙╔├. ╥EMAINDER IS
ASSEMBLY CODE.
╙┼╤ DATAFILE: AS IF WAS CREATED BY ┬┴╙╔├. ├REATE A ╟┼╧╙ ╙┼╤ FILE, THEN
CHANGE THE ├OMMODORE AND ╟┼╧╙ FILE TYPE BYTES.
╟┼╧╙ APPLICATION DATAFILE: AS IF WAS CREATED BY A ╟┼╧╙ APPLICATION.
├REATE A ╟┼╧╙ ╙┼╤ FILE, THEN CHANGE THE ╟┼╧╙ FILE TYPE BYTE.
╔N A SIMILAR MANNER, YOU CAN USE ╟EO─EBUGGER TO EXAMINE A WIDE VARIETY
OF DIFFERENT FILE TYPES. ┬UT FIRST, YOU MUST CHANGE THE ├OMMODORE
AND/OR ╟┼╧╙ FILE TYPE BYTE, AND THE LOAD ADDRESS IN THE HEADER BLOCK.
╞UTURE ╟EO╨ROGRAMMER IDEAS:
╟ENERATE ├┬═ ┴PPLICATION WITH HEADER:
┼SSENTIALLY A ├┬═ ASSEMBLY-LANGUAGE PROGRAM, BUT WITH A ╟┼╧╙ HEADER.
╫OULD SAVE THE ╔CON ┼DITOR STEP CURRENTLY REQUIRED.
╙PECIFICATION OF "HIDE DEBUG SCREEN MODE"
╞7 IS PRESSED:
╘╧╟╟╠┼ ╙├╥┼┼╬:
SHOW ╒╙┼╥ SCREEN
WAIT FOR PRESS
SHOW ─┼┬╒╟ SCREEN
IF ═╔╬╔:
PLACE CURSOR ON LEFT
PRINT PROMPT
PRINT INPUT LINE AS IT WAS
LOOP FOR NEXT CHARACTER
╞8 IS PRESSED:
IF HIDDEN = ╞┴╠╙┼
┼╬┴┬╠┼ ╙╚╧╫ ═╧─┼:
CALL ╘OGGLE╙CREEN TO SWITCH USER
PARAMETERS TO HARDWARE
SET HIDE─EBUG╙CREEN = ╘╥╒┼
LOOP FOR NEXT CHARACTER
IF HIDDEN = ╘╥╒┼
─╔╙┴┬╠┼ ╙╚╧╫ ═╧─┼:
SET HIDE─EBUG╙CREEN = ╞┴╠╙┼
CALL ╘OGGLE╙CREEN TO SWITCH USER PARAMETERS
TO SHADOWS, AND DISPLAY DEBUGGER SCREEN
IF IN LEFT-SIDE COMMAND MODE
(MUST REPRINT LINE BECAUSE NOTHING HAS BEEN PRINTED)
PLACE CURSOR ON LEFT
PRINT PROMPT
PRINT INPUT LINE AS IT WAS
IF NOT IN LEFT-SIDE COMMAND MODE
CANCEL OPEN MODE / DEPOSIT MODE
PRINT PROMPT
LOOP FOR NEXT CHARACTER
╚OW ╟EO─EBUGGER ╚ANDLES ╔╥╤ ╔NTERRUPTS
--------------------------------------
╔F YOU ARE WRITING A NORMAL ╟┼╧╙ APPLICATION, THEN YOU DO NOT HAVE TO READ
THE FOLLOWING INFORMATION. ┘OU CAN SKIP AHEAD TO THE SECTION TITLED
"╙TRAY ╔NTERRUPT "╘╥┴╨" ╞ACILITY". ╔F YOU ARE WRITING A NON-╟┼╧╙ APPLICATION
WHICH SETS UP ITS OWN INTERRUPT SERVICE ROUTINE, THIS INFORMATION IS VITAL;
YOUR PROGRAM WILL NOT RUN CORRECTLY UNDER ╟EO─EBUGGER UNLESS YOU FOLLOW THESE
INSTRUCTIONS. ╬OTE: ╔╙╥ STANDS FOR ╔NTERRUPT ╙ERVICE ╥OUTINE.
╫HEN ╟EO─EBUGGER IS RUNNING A USER APPLICATION, IT INSERTS A SMALL WEDGE
ROUTINE IN PLACE OF THE NORMAL ╔╙╥ (WHICH IN MOST CASES WILL BE THE ╟┼╧╙ ╔╙╥).
╘HIS WEDGE FIRST CHECKS IF THE ╔╥╤ INTERRUPT WAS GENERATED BY THE ╔╥╤ LINE OR A
┬╥╦ INSTRUCTION. ╔F IT WAS A ┬╥╦ INSTRUCTION, THE WEDGE EXECUTES THE APPROPRIATE
MONITOR. ╔F THE INTERRUPT WAS AN ╔╥╤, THE WEDGE CALLS THE EXISTING ╔╙╥.
╘HUS: THE DEBUGGER IS ABLE TO MONITOR THE ╔╥╤/┬╥╦ EVENTS, WITHOUT INTERFERING
WITH REGULAR INTERRUPT SERVICING THAT IS VITAL TO MOST APPLICATIONS.
╘O INSERT THIS WEDGE ROUTINE INTO THE INTERRUPT SEQUENCE, ╟EO─EBUGGER MUST
FIRST EXAMINE THE ╔╥╤ VECTOR AT LOCATION $╞╞╞┼, TO SEE WHERE THE CURRENT ╔╙╥
IS LOCATED. ╔T THEN MUST MODIFY THIS VECTOR SO IT WILL POINT TO THE ╟EO─EBUGGER
WEDGE ROUTINE WHICH IS LOCATED IN THE $0334 AREA.
╔F YOU ARE WRITING A NON-╟┼╧╙ APPLICATION WHICH SETS UP ITS OWN ╔╙╥, THEN YOU
WILL PROBABLY WE SETTING THE ╔╥╤ VECTOR AT SOME POINT DURING YOUR INITIALIZATION
CODE. ╔N ORDER FOR YOUR APPLICATION TO RUN UNDER ╟EO─EBUGGER, YOU MUST SET THIS
VECTOR CAREFULLY; BECAUSE IF YOUR APPLICATION IS RUNNING UNDER ╟EO─EBUGGER,
YOU NEED TO STORE THE ADDRESS OF YOUR ╔╙╥ TO A VECTOR IN THE ╟EO─EBUGGER WEDGE
CODE, ╬╧╘ TO THE ╔╥╤ VECTOR.
┬ELOW IS A ROUTINE WHICH YOU CAN INSERT INTO YOUR PROGRAM TO SET UP THE
APPROPRIATE VECTOR TO YOUR ╔╙╥. ╬OTE THAT THIS ROUTINE ASSUMES THAT YOUR
APPLICATION WILL ONLY ALLOW INTERRUPTS WHEN THE MEMORY MAP IS CONFIGURED AS A
STANDARD ╟┼╧╙ MEMORY MAP. ╧N THE ├64, THIS MEANS ALL ╥┴═, AND ON THE ├128,
THIS MEANS ALL BANK 1 ╥┴═, NO ╥╧═. ╔F YOUR APPLICATION IS GOING TO ALLOW
INTERRUPTS IN OTHER MEMORY MAP CONFIGURATIONS, USE THE "╔NTERRUPT ╚ANDLING
╥EFERENCE ╬OTES" SECTION OF THIS DOCUMENT TO CUSTOMIZE THIS INSTALLATION
ROUTINE.
╔NSERT THE FOLLOWING CONSTANTS AND SUBROUTINE INTO THE INITIALIZATION PHASE
OF YOUR APPLICATION, FOR IT TO RUN PROPERLY UNDER ╟EO─EBUGGER.
╔N THE CONSTANT DEFINITION PORTION OF YOUR PROGRAM:
─┼╓┼╠╧╨═┼╬╘ = ╘╥╒┼ ;╙ET TO ╘╥╒┼ IF YOU SOMETIMES RUN THIS
;APPLICATION UNDER ╟EO─EBUGGER ╓2.0,
;AND RUN IT UNDER THE DESK╘OP OTHER TIMES.
;╙ET TO ╞┴╠╙┼ IF YOU WILL NEVER RUN THIS
;APPLICATION UNDER ╟EO─EBUGGER ╓2.0.
╘O╔NT╙VC = $0367 ;┴DDRESS OF ╟EO─EBUGGER VECTOR WE MODIFY
╔N THE INITIALIZATION PORTION OF YOUR PROGRAM:
;*************************************************************************
; ╔NIT╔NT╙VC
;
; ╘HIS ROUTINE MODIFIES THE ╔╥╤ VECTOR, SO THAT THE USER'S INTERRUPT
; SERVICE ROUTINE IS CALLED INSTEAD OF THE ╟┼╧╙ INTERRUPT SERVICE ROUTINE.
; ╘HIS ROUTINE CAN ASSEMBLE ONE OF TWO WAYS, DEPENDING UPON THE
; VALUE OF THE CONSTANT CALLED "─┼╓┼╠╧╨═┼╬╘".
;
; ┴SSUMPTIONS:
; 1) ╘HAT THE STANDARD ╟┼╧╙ MEMORY MAP IS PRESENT WHEN THIS ROUTINE RUNS.
; 2) ╘HAT YOUR APPLICATION DOES NOT DO ANYTHING WEIRD SUCH AS ALLOWING
; INTERRUPTS WHEN HIGH-MEMORY ╥╧═ OR ╥┴═ BANK 0 (ON THE ├128) IS
; SWAPPED IN.
;
; ╙IDE-EFFECTS:
; 1) ╔F THE FOLLOWING SCENARIO APPLIES:
; - YOU ARE WRITING A NON-╟┼╧╙ APPLICATION FOR THE ├64
; - WHICH TRIES TO DISABLE INTERRUPTS WHEN ╥╧═ IS IN
; - YOU RUN IT UNDER ╟EO─EBUGGER
; - YOUR PROGRAM SWAPS ╦ERNAL ╥╧═ IN, WITHOUT PROPERLY
; DISABLING INTERRUPTS
; - AN INTERRUPT OCCURS
; ...THEN ╟EO─EBUGGER ╫╔╠╠ PROPERLY RUN YOUR ╔╙╥, WITHOUT GIVING
; YOU ANY WARNING THAT THERE IS A BUG IN YOUR PROGRAM, AND THAT IT
; WOULD HAVE CRASHED IF IT WAS NOT RUN UNDER ╟EO─EBUGGER.
;
; ┴UTHOR: ┼RIC ┼. ─EL ╙ESTO ┴PRIL 1988
; ├ALLED BY: INITIALIZATION CODE
; ╨ASS: NOTHING
; ╥ETURNS: NOTHING
; ┴LTERS: ACCUMULATOR AND FLAGS
;
;************************************************************************
╔NIT╔NT╙VC:
SEI ;DISABLE INTERRUPTS
.IF ─┼╓┼╠╧╨═┼╬╘ ;------------------------------------------------
;┴SSEMBLE THE FOLLOWING CODE WHEN YOU WANT YOUR APPLICATION TO RUN CORRECTLY
;UNDER ╟EO─EBUGGER ╓2.0.
LDA ╔╥╤_╓┼├╘╧╥+1 ;CHECK HIGH BYTE OF EXISTING ╔╥╤ VECTOR
;TO SEE IF WE ARE RUNNING UNDER DEBUG.
BMI 50$ ;SKIP IF NOT...
;WE ARE RUNNING UNDER ╟EO─EBUGGER: MUST STORE OUR ╔╥╤ VECTOR TO
;THE ╟EO─EBUGGER CODE IN THE $0334 AREA. ╔F RUNNING IN ├128 MODE,
;THIS ONLY MODIFIES THE WEDGE CODE IN BANK 1, WHICH IS SUFFICIENT.
╠OAD╫ ╘O╔NT╙VC,#═Y╔NT╙VC
CLI ;ENABLE INTERRUPTS
RTS ;ALL DONE
50$: ;WE ARE NOT RUNNING UNDER ╟EO─EBUGGER: SET UP NEW ╔╥╤ VECTOR
;IN NORMAL FASHION.
.ENDIF ;(─┼╓┼╠╧╨═┼╬╘)---------------------------------------------------
;┴T THIS POINT, WE KNOW THAT EITHER THE APPLICATION IS NOT RUNNING UNDER
;╟EO─EBUGGER, OR THAT WE DON'T EXPECT IT TO RUN UNDER ╟EO─EBUGGER (THE CASE
;WHERE ─┼╓┼╠╧╨═┼╬╘ = ╞┴╠╙┼). ╔NTERRUPTS HAVE ALREADY BEEN DISABLED ABOVE.
;╙ET UP THE ╔╥╤ VECTOR AT $╞╞╞┼ TO POINT TO NEW SERVICE ROUTINE. ╬OTE THAT
;IN ├128 MODE, THIS ONLY AFFECTS THE ╔╥╤ VECTOR IN BANK 1 ╥┴═.
╠OAD╫ ╔╥╤_╓┼├╘╧╥,#═Y╔NT╙VC
CLI ;ENABLE INTERRUPTS
RTS ;ALL DONE
╙TRAY ╔NTERRUPT "╘╥┴╨" ╞ACILITY
-------------------------------
┘OU WOULD EXPECT THAT AN APPLICATION WHICH OFTEN HAS TO SWAP IN THE ╦ERNAL ╥╧═
WOULD BE CAREFUL TO DISABLE INTERRUPTS DURING THESE OPERATIONS. ╘HIS IS TO
PREVENT THE CASE WHERE AN ╔╥╤ OCCURS AND ╟┼╧╙ INTERRUPT CODE HAS BEEN SWAPPED
OUT OF THE MEMORY MAP. ╧FTEN, IT IS EASY FOR SUCH A PROVISION TO BE LEFT OUT
IN THE INITIAL IMPLEMENTATION OF A PROGRAM. ╘O CATCH THESE HARD-TO-FIND BUGS,
╟EO─EBUGGER HAS A "STRAY ╔╥╤ TRAP" FACILITY.
╘HIS FACILITY SERVES TO WARN YOU WHEN AN INTERRUPT HAPPENS AND THE MEMORY MAP
IS CONFIGURED IN A MANNER YOU DID NOT EXPECT.
╔F YOU ARE RUNNING A ╟┼╧╙ APPLICATION (WITH NORMAL ╟┼╧╙ INTERRUPTS), THEN THIS
FACILITY WILL STOP PROGRAM EXECUTION AND DISPLAY THE "*** ┼XECUTION STOPPED ***"
MESSAGE WHEN AN ╔╥╤ OCCURS AND THE ╦ERNAL ╥╧═ IS SWAPPED IN. ┘OU CAN EXAMINE
THE ╨├ REGISTER TO SEE WHICH OF YOUR ROUTINES WAS EXECUTING WHEN THE ╔╥╤
OCCURRED, AND CAN ADD INTERRUPT-DISABLING CODE WHERE NECESSARY.
╔F YOU ARE WRITING A NON-╟┼╧╙ APPLICATION WHICH RUNS ON THE ├128, AND SETS UP
ITS OWN INTERRUPT SERVICE ROUTINE, YOU WILL PROBABLY DESIGN IT SO INTERRUPTS
ARE ENABLED ONLY WHEN THE MEMORY IF CONFIGURED IN A SPECIFIC WAY. ╚ERE ARE
SEVERAL EXAMPLES OF ASSERTIONS YOU MIGHT FIND IN SUCH AN APPLICATION:
- "╔ WILL ONLY ALLOW INTERRUPTS WHEN BANK 1 ╥┴═ IS MAPPED IN."
- "╔ WILL ONLY ALLOW INTERRUPTS WHEN BANK 0 ╥┴═ OR ╥╧═ IS MAPPED IN."
┬Y REFERING TO THE "╔NTERRUPT ╚ANDLING ╥EFERENCE ╬OTES" SECTION OF THIS
DOCUMENT, AND ADDING SOME CODE TO THE INITIALIZATION PORTION OF YOUR PROGRAM,
YOU CAN ALTER THE WEDGE CODE SO THAT A ╘╥┴╨ IS PRODUCED IF AN INTERRUPT
OCCURS WHEN THE MEMORY MAP IS IN AN UNEXPECTED CONFIGURATION.
(╔S IT POSSIBLE TO CONTINUE PROGRAM EXECUTION AT THIS POINT???)
╔NTERRUPT ╚ANDLING ╥EFERENCE ╬OTES
╔F YOU ARE WRITING A NON-╟┼╧╙ APPLICATION, THE FOLLOWING TABLES PROVIDE
USEFUL REFERENCE INFORMATION ABOUT THE VECTORS IN ╟EO─EBUGGER'S WEDGE
CODE. ┬Y ADDING CODE TO YOUR APPLICATION WHICH CHANGES THESE VECTORS,
YOU CAN GET YOUR INTERRUPT SERVICE ROUTINE TO WORK WHEN YOUR APPLICATION
IS RUNNING UNDER ╟EO─EBUGGER. ┘OU CAN ALSO SET THESE VECTORS SO THAT A ╘╥┴╨
OCCURS IF AN INTERRUPT HAPPENS WHEN THE MEMORY MAP IS SUCH THAT YOUR
APPLICATION WOULD CRASH.
├64 ═ODE
--------
╠ABEL ┴DDR ╬ORMAL ├ONTENTS ═ODIFIED ├ONTENTS
--------------- ------- ------------------------------- ------------------------
╥OM╔╥╤_╓EC: $0338 JMP ╘RAP╥╧═ 4├ 45 03 JMP ╚ANDLE╔╥╤ 4├ 5┼ 03
- AS IT STANDS, THIS LOCATION WILL CAUSE A ╘╥┴╨ WHENEVER AN ╔╥╤ HAPPENS
AND THE ╦ERNAL ╥╧═ IS MAPPED INTO HIGH MEMORY. ═ODIFY THIS LOCATION IF YOU WANT
EXECUTION TO CONTINUE TO THE ╘O╔NT╙VC VECTOR WHEN ╥╧═ IS MAPPED INTO HIGH
MEMORY. ╘HE ╘O╔NT╙VC VECTOR CAN THEN DIRECT EXECUTION TO YOUR ╔╙╥.
╘O╔NT╙VC: $╪╪╪╪ JMP ╟EOS╔╙╥ 4├ XX XX JMP ┘OUR_╔╙╥ 4├ ╠╠ ╚╚
-OR-
JMP ╘RAP╔╥╤ 4├ ╪╪ ╪╪
- AS IT STANDS, THIS LOCATION DIRECTS EXECUTION TO THE ╟┼╧╙ ╔╙╥ WHEN AN
INTERRUPT OCCURS. ┘OU CAN MODIFY THIS VECTOR TO POINT TO YOUR OWN ╔╙╥,
OR FORCE A ╘╥┴╨ WHEN AN ╔╥╤ OCCURS. ╬OTE THAT IF ╥OM╔╥╤_╓EC POINTS TO ╚ANDLE╔╥╤,
THEN THE ╘O╔NT╙VC VECTOR HANDLES ALL ╔╥╤ INTERRUPTS, REGARDLESS OF WHETHER
╥┴═ OR ╥╧═ IS IN.
├128 ═ODE
---------
╠ABEL ┴DDR ╬ORMAL ├ONTENTS ═ODIFIED ├ONTENTS
--------------- ------- ------------------------------- ------------------------
(IN BANK 0)
╥OM╔╥╤_╓EC: ┬0$╪╪╪╪ JMP ╘RAP╥╧═ 4├ ╪╪ ╪╪ JMP ╚ANDLE╔╥╤ 4├ ╪╪ ╪╪
- AS IT STANDS, THIS LOCATION WILL CAUSE A ╘╥┴╨ WHENEVER AN ╔╥╤ HAPPENS
AND THE ╦ERNAL ╥╧═ IS MAPPED INTO HIGH MEMORY. ═ODIFY THIS LOCATION IN BANK 0
╥┴═ IF YOU WANT EXECUTION TO CONTINUE TO THE ╘O╔NT╙VC VECTOR WHEN ╥╧═ IS MAPPED
INTO HIGH MEMORY. ╘HE ╘O╔NT╙VC VECTOR CAN THEN DIRECT EXECUTION TO YOUR ╔╙╥.
(IN BANK 0)
╘O╔NT╙VC: ┬0$╪╪╪╪ JMP ╟EOS╔╙╥ 4├ XX XX JMP ┘OUR_╔╙╥ 4├ ╠╠ ╚╚
-OR-
JMP ╘RAP╔╥╤ 4├ ╪╪ ╪╪
- AS IT STANDS, THIS LOCATION DIRECTS EXECUTION TO THE ╟┼╧╙ ╔╙╥ WHEN AN
INTERRUPT OCCURS ┴╬─ BANK 0 IS VISIBLE IN THE $0300 AREA. ┘OU CAN MODIFY THIS
VECTOR TO POINT TO YOUR OWN ╔╙╥, OR FORCE A ╘╥┴╨ WHEN SUCH AN ╔╥╤ OCCURS. ╬OTE
THAT IF ╥OM╔╥╤_╓EC POINTS TO ╚ANDLE╔╥╤, THEN THIS BANK 0 ╘O╔NT╙VC VECTOR
WILL ADDITIONALLY HANDLE ╔╥╤ INTERRUPTS WHICH OCCUR WHEN ╥╧═ IS MAPPED INTO
HIGH MEMORY.
(IN BANK 1)
╘O╔NT╙VC: ┬1$╪╪╪╪ JMP ╟EOS╔╙╥ 4├ XX XX JMP ┘OUR_╔╙╥ 4├ ╠╠ ╚╚
-OR-
JMP ╘RAP╔╥╤ 4├ ╪╪ ╪╪
- AS IT STANDS, THIS LOCATION DIRECTS EXECUTION TO THE ╟┼╧╙ ╔╙╥ WHEN AN
INTERRUPT OCCURS ┴╬─ BANK 1 IS VISIBLE IN THE $0300 AREA. ┘OU CAN MODIFY THIS
VECTOR TO POINT TO YOUR OWN ╔╙╥, OR FORCE A ╘╥┴╨ WHEN SUCH AN ╔╥╤ OCCURS.
╬═╔ (╥ESTORE KEY) ╔NTERRUPTS
╫HEN ╟EO─EBUGGER IS EXECUTING USER CODE, WE SET UP THE ╬═╔ VECTORS SO THAT
THE ╥┼╙╘╧╥┼ KEY CAN STOP EXECUTION AT ANY POINT AND BRING US INTO THE
MONITOR. ╬OTE THAT THIS INVOLVES THREE ╬═╔ VECTORS: ┬1$╞╞╞┴, ┬0$╞╞╞┴,
AND ┬0$318 FOR ╬═╔S WHICH OCCUR WHEN ╥╧═ IS MAPPED INTO THE $FFFA AREA.
╫HEN THE MONITOR IS RUNNING, WE SET UP THE CURRENT BANK'S $╞╞╞┴ ╬═╔ VECTOR
SO THAT THE USER CAN HIT THE ╥┼╙╘╧╥┼ KEY TO QUIT ANY OPERATION. ╘HIS IS
IMPLEMENTED AS "SET-FLAG AND POLL-FLAG-AND-STOP WHEN YOU CAN" SO THAT
CRUCIAL OPERATIONS (SUCH AS INSERTING A SYMBOL) ARE NOT INTERRUPTED.
╘O SIMPLIFY MATTERS, WE DISABLE ╬═╔ INTERRUPTS DURING CONTEXT SWITCHING
(STARTING OR STOPPING AN APPLICATION). ╘HIS IS ACCOMPLISHED BY MODIFYING
THE WEDGE CODE SLIGHTLY SO THAT IF AN ╬═╔ OCCURS WHEN WE DON'T WANT IT TO,
THE WEDGE CODE IMMEDIATELY RETURNS. ╔N BOTH ├64 AND ├128 MODES, THERE IS
ONLY ONE LOCATION IN THE WEDGE CODE WHICH MUST BE MODIFIED. (╘HIS IS TRUE
ON THE 128 BECAUSE NO MATTER WHICH ENTRY POINT IS USED TO GET INTO THE WEDGE
CODE: ╥AM╬═╔_┬0, ╥AM╬═╔_┬1, OR ╥OM╬═╔_┬0, EXECUTION ENDS UP AT THE POINT
LABELED ╙KIP╘O╥ETURN IN THE WEDGE CODE IN BANK 1. ╘HEREFORE WE ONLY NEED TO
ALTER THE WEDGE CODE AT THAT POINT, AND NOT IN BOTH BANKS.)
╬OTES:
1) ╓1.0 ╟EO─EBUGGER USED TO DISABLE ╬═╔ INTERRUPTS DURING CALLS TO ╟┼╧╙
INTERRUPT CODE. ╘HE MOTIVATION FOR THIS IS THE IDEA THAT WHEN THE USER HITS
THE ╥┼╙╘╧╥┼ KEY, HE DOES NOT WANT TO STOP EXECUTION IN THE MIDDLE OF
╟┼╧╙ INTERRUPT CODE. ╓2.0 ╟EO─EBUGGER DOES NOT DO THIS ANYMORE BECAUSE WE
DO NOT WANT TO LOCK-OUT THE ╥┼╙╘╧╥┼ KEY WHILE THE USER'S INTERRUPT SERVICE
ROUTINE IS RUNNING. ┴ND BESIDES, WHAT IS THE STOPMAIN COMMAND FOR ANYWAY?
2) CONCERNING ╬═╔ BOUNCE:
- WHEN THE ╥┼╙╘╧╥┼ KEY IS PRESSED, TWO ╬═╔ SIGNALS AREA GENERATED,
ABOUT 150USEC APART.
3) ├ONCERNING PREVENTING ╬═╔S WHICH IMMEDIATELY FOLLOW A ┬╥╦ INSTRUCTION:
- WE HANDLE THIS CORRECTLY
4) ╧N BOTH THE 64 AND 128, THE ├╔┴2 CHIP HAS THE CAPABILITY OF GENERATING
AN ╬═╔ SIGNAL. ╘O PREVENT THIS FROM OCCURING DURING DISK-ACCESS ROUTINES,
THE ╟┼╧╙ ╔NIT╞OR╔╧ ROUTINE FORCES THE ├╔┴2 TO GENERATE ONE INTERRUPT BY SETTING
THE TIMER VALUE TO A LOW NUMBER LIKE 1. ╔NIT╞OR╔╧ KNOWS THAT IT WILL GET CONTROL
WHEN THIS FORCED-╬═╔ OCCURS BECAUSE IT SWAPS THE KERNAL ╥╧═ INTO THE HIGH-
MEMORY AREA AND SETS THE KERNAL'S PAGE 3 ╬═╔ VECTOR (NMIVEC, $0318) TO POINT
TO A DUMMY ╬═╔ ROUTINE.
- ON THE ├64, THIS WORKS FINE, EXCEPT FOR THE FACT THAT ╟EO─EBUGGER'S
VECTOR AT $0318 GETS TRASHED BY ╔NIT╞OR╔╧.
- ON THE ├128, ╔NIT╞OR╔╧ DOES NOT SWAP ╥╧═ IN CORRECTLY (IT IS CHANGING
LOCATION $0001). ╙O WHEN IT FORCES THIS ╬═╔ TO OCCUR, THE 6510 USES
THE VECTOR AT ┬1$╞╞╞┴ OR ┬0$╞╞╞┴, AND WE END UP IN THE DEBUGGER.
╘O SOLVE THIS PARTICULAR PROBLEM, ╔ HAVE ADDED CODE TO ╓2.0 TO POLL
THE ├╔┴2 CHIP AFTER AN ╬═╔ OCCURS TO SEE IF IT WAS THE ╥┼╙╘╧╥┼ KEY OR
THE ├╔┴2 CHIP. ╔F IT WAS THE ├╔┴2 CHIP, ╟EO─EBUGGER QUICKLY RETURNS
TO THE APPLICATION.
╚ANDLING ╬═╔S FROM THE ├╔┴ CHIP IN THIS MANNER IS A GOOD IDEA IN GENERAL,
ON BOTH THE ├64 AND THE ├128. ╔T ALLOWS THE USER TO WRITE PROGRAMS WHICH
USE THE ├╔┴2'S ╬═╔ CAPABILITY WITHOUT WORRYING ABOUT THE DEBUGGER GETTING
CONFUSED. ┬UT NOTE THAT THE USER'S APPLICATION WILL NOT RUN AS EXPECTED:
ANYTIME THE ├╔┴2 GENERATES AN ╬═╔, THE DEBUGGER WILL GET CONTROL, POLL THE
├╔┴2 TO SEE THAT IT IS RESPONSIBLE, AND WILL RETURN TO THE APPLICATION.
╘HE APPLICATION WILL HAVE NO WAY OF KNOWING THAT AN ╬═╔ OCCURRED, SINCE NOT
ONLY DID WE STEAL THE ╬═╔ INTERRUPT, WE ALSO CLEARED THE ├╔┴2 INTERRUPT STATUS
REGISTER JUST BY POLLING IT. ╘HAT'S LIFE IN THE BIG CITY!
;*************************************************************************
; ─O╥BOOT
;
; ╘HIS COMMAND DOES WHAT THE "╥┬╧╧╘" ICE MACRO DOES: IT PULLS THE ENTIRE
; ╟┼╧╙ KERNAL IN FROM ╥┼╒ BANK #0.
;
; ╘ALKED TO ─OUG 6/6/88:
; ╔F THE CURRENT DRIVE IS A ╥┴═ ─╔╙╦ WHEN THIS COMMAND IS INVOKED,
; THE DESK╘OP WILL COME UP OK. ╘HE DRIVE WHICH IS SELECTED WILL DEPEND
; UPON A COPY OF CUR─RIVE WHICH IS STORED IN THE ╥┼╒. (┘OU CAN CHANGE
; THIS COPY USING ╙ELECT╨RINTER FROM THE DESK╘OP.)
;
; ╔F THE CURRENT DRIVE IS NOT A ╥┴═ ─╔╙╦ WHEN THIS COMMAND IS INVOKED,
; THEN THE DESK╘OP WILL NOT COME BACK UNTIL THE PHYSICAL DRIVE IS
; TURNED OFF AND BACK ON AGAIN.
;
; ╘HE ONLY WAY TO IMPROVE THIS WOULD BE FOR THE DEBUGGER TO CALL
; ┼XIT╘URBO TO LET GO OF THE PHYSICAL DRIVE. ┬UT SINCE WE ARE NOT
; SURE THE ┼XIT╘URBO CODE IS STILL IN MEMORY, THAT IS A BAD IDEA.
; ╫E CAN'T CLOSE THE ┼XIT╘URBO CODE, BECAUSE IT IS DIFFERENT FOR
; EVERY DIFFERENT DISK TYPE.
;
╫E MAINTAIN TWO SEPARATE MEMORY POINTERS: ╨├ (ACTUAL PROGRAM COUNTER),
AND ╠├ (ADDRESS FOR OPEN COMMANDS). ┼ACH POINTER INCLUDES ADDRESS AND
MEMORY ENVIRONMENT INFORMATION.
╬EW COMMANDS:
╙╒╨┼╥ ═╔╬╔ USAGE
--------------- --------------- -----------------------------------------------
INITVIEW -- COPY ╨├ ADDR AND BANK INFO TO ╠├
SETVIEW SV SET ╠├'S BANK INFO
VIEW VW DISPLAY CURRENT ╨├ AND ╠├ ADDRESS AND BANK INFO
USEVIEW UV CHANGE ╨├'S BANK INFO TO WHAT IS IN ╠├
B1 B1 SAME AS VIEW ($7┼,$00)
B0 B0 SAME AS VIEW ($3┼,$00)
--------------- --------------- -----------------------------------------------
SETVIEW, VIEW, AND USEVIEW ARE PRIMITIVES
POSSIBLE USAGES:
VIEWING OTHER BANKS AND PROCEEDING FROM OLD ╨├ AND BANK:
ADDRESS BANK INFO
--------------- -------------------
A ADDRESS ╠├ = ADDRESS
SETVIEW XX,XX ╠├B = NEW BANK INFO
A ADDRESS, ETC... ╠├ = ANYTHING ╠├B = ANYTHING
GO USES ╨├ ADDRESS AND BANK INFO
SETTING A NEW ╨├ AND BANK:
ADDRESS BANK INFO
--------------- -------------------
VIEW XX,XX ╠├B = NEW BANK INFO
PC ADDRESS ╨├ = NEW ADDR ╨├B = ╠├B
- OR -
PC ADDRESS ╨├ = NEW ADDR
VIEW XX,XX ╠├B = NEW BANK INFO
USEVIEW ╨├B = ╠├B
CHANGING ╨├'S BANK INFO WITHOUT CHANGING ╨├ ADDRESS
ADDRESS BANK INFO
--------------- -------------------
VIEW XX,XX ╠├B = NEW BANK INFO
USEVIEW ╨├B = ╠├B
CHANGING ╨├ ADDRESS WITHOUT CHANGING BANK INFO:
ADDRESS BANK INFO
--------------- -------------------
PC ╠├ = ╨├ ╠├B = ╨├
(ONLY REQUIRED IF HAVE CHANGED ╠├ SINCE ╥┼╙╘╧╥┼ KEY)
PC NEW ADDRESS ╨├ = NEW ╨├B = ╠├
╨OSSIBILITY FOR FUTURE ╓╔┼╫ COMMAND:
WHEN INVOKED WITHOUT ARGUMENTS, DIPLAYS:
- ╙╨╠╔╘ ╔╬╘╧ ╨├ ┴╬─ ╠├ ├╧╠╒═╬╙ -
┴DDRESS ╥ANGE ╥AM ┬ANK ╓ISIBLE ╧VERRIDE
------------- ---------------- --------
$╞├00 - $╞╞╞╞ 1 ╥╧═
$╞800 - $╞┬╞╞ 1 ╥╧═
$╞000 - $╞7╞╞ 1 ╥╧═
$┼000 - $┼╞╞╞ 1 ╥╧═
$─000 - $─╞╞╞ 1 ╔/╧
$├000 - $├╞╞╞ 1
$┬000 - $┬╞╞╞ 1
$┴000 - $┴╞╞╞ 1
$9000 - $9╞╞╞ 1
$8000 - $8╞╞╞ 1
$7000 - $7╞╞╞ 1
$6000 - $6╞╞╞ 1
$5000 - $5╞╞╞ 1
$4000 - $4╞╞╞ 1
$3000 - $3╞╞╞ 1
$2000 - $2╞╞╞ 1
$1000 - $1╞╞╞ 1
$0800 - $0╞╞╞ 1
$0400 - $07╞╞ 0
$0000 - $03╞╞ 0
USE PRINT HEX WORD ROUTINE, ADDING $0FFF TO GET RIGHT SIDE
START INCREMENT AT $0400, OFFSET AT $03╞╞
ONCE GET TO $1000, INC = $1000, OFFSET = $0╞╞╞
╚OW ╟EO─EBUGGER MANAGES MACHINE-DEPENDENT
MEMORY-MAP ENVIRONMENT INFORMATION
╘HE DEBUGGER CARRIES MEMORY-MAP ENVIRONMENT INFORMATION, WHICH IS MACHINE-
DEPENDENT, AROUND IN GENERIC VARIABLES SUCH AS APP┬ANK╔NFO1 AND APP┬ANK╔NFO2.
╘HIS WAY, THE ROUTINES WHICH JUST MOVE THIS INFORMATION AROUND (BUT DON'T
DIRECTLY USE IT) ARE MACHINE-INDEPENDENT.
┼XECUTION ┼NVIRONMENT:
╫HEN THE DEBUGGER STOPS EXECUTION OF AN APPLICATION (╥┼╙╘╧╥┼ PRESSED OR
╙┬╨ HIT), THE USER'S "EXECUTION ENVIRONMENT" IS SAVED. ╘HIS INCLUDES:
PROCESSOR REGISTER AND FLAG VALUES
╨├ ADDRESS
CURRENT BANK INFORMATION
ZERO PAGE VARIABLES
STACK INFORMATION
╫E CALL THE ╨├ ADDRESS AND ITS MEMORY-MAP INFORMATION THE "┼XECUTION
┼NVIRONMENT" OR MORE SIMPLY, THE "╨├ POINTER".
╓IEWING ┼NVIRONMENT:
╧NCE THE DEBUGGER HAS STOPPED AN APPLICATION, THE "VIEWING ENVIRONMENT" IS THE
SAME AS THE "EXECUTION ENVIRONMENT". ╘HIS MEANS THAT ALL OF THE MEMORY
EXAMINATION AND MODIFICATION COMMANDS USE THE SAME MEMORY-MAP INFORMATION AS
THE ┼XECUTION ┼NVIRONMENT.
╘HROUGH USE OF THE ╙┼╘╓╔┼╫ COMMAND, THE VIEWING ENVIRONMENT CAN BE CHANGED.
┘OU CAN SET UP A NEW MEMORY-MAP CONFIGURATION, AND THEN USE THE MEMORY
EXAMINATION AND MODIFICATION COMMANDS TO READ/WRITE MEMORY IN THIS NEW
CONFIGURATION.
╫HEN YOU GIVE THE ╟╧ COMMAND TO RESUME EXECUTION, THE DEBUGGER RESTORES THE
EXECUTION ENVIROMENT, AND YOUR PROGRAM CONTINUES EXECUTION.
╫E CALL THE VIEWING ADDRESS AND ITS ENVIRONMENT THE "╠├ POINTER".
-------------------------------------------------------------------------------
┴SPECTS OF ╟EO─EBUGGER WHICH MUST CHANGE ACCORDING TO MACHINE-DEPENDENCIES
IN ╓2.0, TO REMAIN COMPATIBLE WITH ╓1.0. (╦ILL THESE IN ╓3.0.)
╥EGISTER COMMAND:
DISPLAYS ╨├ ADDRESS, HIGHLIGHTS ADDRESS IF EFFECTIVE ADDRESS OF
╨├ (CONSIDERING ╨├ BANK INFO) IS BANK 0.
DISPLAYS ├╨╒_─┴╘┴ VALUE (╔T REALLY SHOULD NOT DO THIS ANYMORE,
BUT ╔ AM TRYING TO MAINTAIN COMPATABILITY WITH ╓1.
64: READ DIRECTLY FROM APP┬ANK╔NFO1
128: [7-3,0]: DIRECT READ FROM MEMORY
[21]: SHADOW WITH APP├╨╒_┬21
╥EGISTER ╧PEN ├OMMAND:
..INCLUDES ══ REGISTER: IS ├╨╒_─┴╘┴. (╘O BE COMPATIBLE WITH ╓1)
64: DIRECTLY READ/WRITE TO APP┬ANK╔NFO1
128: [7-3,0]: DIRECTLY ╥/╫ TO MEMORY
[21]: SHADOW WITH APP├╨╒_┬21
-------------------------------------------------------------------------------
┴SPECTS OF ╟EO─EBUGGER WHICH ARE MACHINE-INDEPENDENT.
═EMORY EXAMINATION AND MODIFICATION:
BANK COMMAND: AFFECTS ╠├'S BANK INFO: CUR┬ANK╔NFO1 AND CUR┬ANK╔NFO2
OPEN MODES: USES ╠├'S BANK INFO
HIGHLIGHTS ADDRESS IF IS IN PHYSICAL BANK 0
DUMP COMMAND: USES ╠├'S BANK INFO
HIGHLIGHTS ADDRESS IF IS IN PHYSICAL BANK 0
MOVE/FILL/DIFF/FIND: USES ╠├'S BANK INFO
HIGHLIGHTS ADDRESS IF IS IN PHYSICAL BANK 0
@ AND @@ OPERATORS: USES ╠├'S BANK INFO
╙INGLE AND ╘OP-STEP BREAKPOINTS:
MAINTAIN THEIR OWN BANK INFORMATION
(COPIED FROM ╨├ BANK INFO BEFORE EXECUTION BEGUN)
╙OFTWARE ┬REAKPOINTS:
MAINTAIN THEIR OWN BANK INFORMATION
(COPIED FROM ╨├ BANK INFO BEFORE EXECUTION BEGUN)
╨├ COMMAND:
WITHOUT ARGUMENT: COPY ╨├ ADDRESS AND BANK INFO TO ╠├
(RESTORES EXECUTION ENVIRONMENT)
WITH ARGUMENT: (SAME AS SETTING ╨├ IN OPEN MODE)
SET ╨├ ADDRESS = ARGUMENT
SET ╨├ BANK INFO = ╠├ BANK INFO
╫OULD BE NICE:
╓3.0: MAKE ╥┼╒ SUPER MONITOR HAVE OPTION TO USE 32╦ BACKRAM FOR SYMBOL TABLE...
╫OULD BE COOL IF DEBUGGER COULD CHECKSUM RAM EXPANSION TO SEE IF IS
ALREADY UP THERE (SO COULD ASSEM, LINK, DEBUG, ASSEM, LINK, DEBUG
REALLY QUICKLY WHEN GEO─EBUG IS ON DISK, AND NOT ON RAMDISK).
╫HY NOT WAIT TILL JUST AFTER INTERRUPT CODE RUNS TO DISABLE
INTERRUPTS BEFORE GOING TO USER'S CODE? ╫OULD FLICKER A BIT LESS.
╫ARN USER IF WHEN WE BREAK HIS ╙╨ IS SO LOW THAT MONITOR CODE WILL WRAP
IT AROUND...
╔F ╬═╔ COULD REALIZE WHAT IT INTERRUPTED AND COULD MAKE REPAIRS SO
A ╟╧ WOULD NOT CRASH US.
╔F THE TOP-STEP COMMAND COULD RECOGNIZE CALLS TO MOST OF THE ╟┼╧╙ INLINE
ROUTINES AND STOP AND WARN THE USER WHAT IS ABOUT TO HAPPEN.
┬EGIN AND ┼ND STRUCTURES IN MACROS. ╔F AND FOR MACROS COULD SKIP TO
NEXT "END". ═IGHT EVEN ADD COUNTER SO COULD BE SEVERAL LEVELS DEEP.
├LEAN UP ENTIRE S/T/P/GO CONDITIONED/LEAP-FROGGED STRUCTURE
├LEAN UP ENTIRE OPEN MODE THING
├LEAN UP MOVE/DIFF/FILL/FIND
┴DD INTELLIGENCE TO PARSE MACRO SO THAT IF ARGS ARE THERE BUT NOT
EXPECTED, GENERATES ERROR.
ALLOW MACRO DEFS WHICH ARE BIGGER THAN SIZE OF INPUT BUFFER?
(ESPECIALLY WHEN LOADING FROM FILE.)